Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

brisanje više recorda

[es] :: PHP :: brisanje više recorda

[ Pregleda: 4415 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

fimalbonegaculo
product development, team lead,
developer, sys-admin
beograd

Član broj: 395
Poruke: 161
62.41.25.*

ICQ: 81662016


+1 Profil

icon brisanje više recorda29.05.2002. u 08:28 - pre 265 meseci
Imam mysql tabelu koju php-om prikažem a pored svakog sloga (record, row) prikažem jedan checkbox i kada korisnik obilježi koje redove da briše php bi trebao da napravi mysql upit koji će to da odradi. MySQL tabela sadrži id polje koje bi mogao da stavim u neki array zajedno sa rednim brojem checkboxa ili nešto slično... Da li postoji neko drugačije (elegantnije rješenje)?

fA7a
"if you fail to plan, you plan to fail"
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: brisanje više recorda29.05.2002. u 21:28 - pre 265 meseci
Sta ce ti elegantnije resenje od resenja koje vec imas?
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Divine
Miloš Šaković
IT Manager
Yugoslavia

Član broj: 883
Poruke: 108
*.crnagora.net.

ICQ: 16044064
Sajt: www.divine.cg.yu


Profil

icon Re: brisanje više recorda30.05.2002. u 18:48 - pre 265 meseci
Ovo rjesenje se svodi na to tvoje (ali sam postovao u edukativne svrhe :)):
Kada listate redove iz mysql tabele postavljate i chekbox pored svakog reda. Posto svaki chekbox mora imati razlicito ime, ta imena stavite u array:
Code:

<input type="checkbox" name="brisi[$row['t_id']]" value="yes">

Tako da bi ako imate tri reda u tabeli sa t_id (index) poljima 1, 3, 9 kod izgledao ovako:
Code:

red...<input type="checkbox" name="brisi[1]" value="yes">
red...<input type="checkbox" name="brisi[3]" value="yes">
red...<input type="checkbox" name="brisi[9]" value="yes">

I na stranici koja procesira formular (u ovom slucaju POST metodom) stoji sledeci kod:
Code:

foreach($HTTP_POST_VARS['brisi'] as $key => $result) {
    if ($result == 'yes') {
        mysql_query("DELETE FROM table WHERE t_id = " . $key) or die(mysql_error());
        /* table je tabela, t_id je index polje */
    }
}


Napomena: Ukoliko vam nije jasno ovo sa array-ima pokusajte da koristite sledecu komandu:
Code:

echo('<pre>'); /* otvara html element koji koristi fixed-width font */
print_r($HTTP_POST_VARS['brisi']); /* human-readable informacije o array-u :) */
echo('</pre'); /* zatvara <pre> tag */


Pozdrav,
Milos
I see dead people...
 
Odgovor na temu

stanoje
php+mysql coravljenje
Batajnica

Član broj: 602
Poruke: 56
*.korisnici.absolutok.com



Profil

icon Re: brisanje više recorda03.06.2002. u 18:12 - pre 265 meseci
Code:

foreach($HTTP_POST_VARS['brisi'] as $key => $result) {
    if ($result == 'yes') {
        mysql_query("DELETE FROM table WHERE t_id = " . $key) or die(mysql_error());
        /* table je tabela, t_id je index polje */
    }
}


dobro, samo jos zlicica vegete u smislu :
napraviti zarez_separated listu t_id1,t_id2 :
$strDeleteIDs="1,5,122,333"
od dobijenih idova(sabiraj zareze uvek u petlji i na kraju seci jedan)
pa onda zakuvati u jednom loncu:

DELETE FROM table WHERE t_id IN ($strDeleteIDs)

Sima Kosmos iz dalekog svemira
 
Odgovor na temu

Divine
Miloš Šaković
IT Manager
Yugoslavia

Član broj: 883
Poruke: 108
195.66.185.*

ICQ: 16044064
Sajt: www.divine.cg.yu


Profil

icon Re: brisanje više recorda03.06.2002. u 19:19 - pre 265 meseci
Citat:
stanoje:
Code:

DELETE FROM table WHERE t_id IN ($strDeleteIDs)



Sad cu morati da prepravljam stare skripte, jer vjeruj mi, ovo nisam znao. Hvala puno
I see dead people...
 
Odgovor na temu

dwarf
Beograd, Srbija

Član broj: 1328
Poruke: 336
*.yubc.net



Profil

icon Re: brisanje više recorda03.06.2002. u 20:01 - pre 265 meseci
Ili drzi sve ID-eve u jednom nizu pa kasnije samo reci

Code:

$ids = implode(",",$keys);
$sql = "DELETE FROM tabela WHERE ID IN (".$ids.")";



Isto resenje, samo izbegavas petlju i stvar je mnogo cistija. Inace, moguce je i checkboxove jednostavno "naciniti" nizom (nzaoves ih sa "[]" na kraju) a za vrednosti postaviti ID trenutnog sloga.
 
Odgovor na temu

stanoje
php+mysql coravljenje
Batajnica

Član broj: 602
Poruke: 56
*.korisnici.absolutok.com



Profil

icon Re: brisanje više recorda04.06.2002. u 16:44 - pre 265 meseci
Citat:
dwarf:
Ili drzi sve ID-eve u jednom nizu pa kasnije samo reci

Code:

$ids = implode(",",$keys);
$sql = "DELETE FROM tabela WHERE ID IN (".$ids.")";



Isto resenje, samo izbegavas petlju i stvar je mnogo cistija. Inace, moguce je i checkboxove jednostavno "naciniti" nizom (nzaoves ih sa "[]" na kraju) a za vrednosti postaviti ID trenutnog sloga.


Ima tu jos par par problema tipa da se omoguce korisniku
dugmici tipa SelectAll SelectNone ili InvertSelection, a bez da se
matretira server za takve glupave operacije.
To vec dolazi u domen JavaScripta(tj izlazi iz domena ovog foruma),
ZNAM neki ga iskljucuju, ali ipak u tom slucaju postoji fora da li cete imenovati
checkboxove kao
1)cbIDS[$i] ili
2)cbIDS_$i jer jedno olaksava
zivot u PHP-u, a drugo u JavaScriptu.
Ako se neko zaleti na document.all Microsoft IE akciju neka zna
da isti po tom principu broji 2 cekboxa u dokumentu kao 2,
dok jedan cbox broji kao nula pa mora da se dodaje jedan cbox sa
ID-jem cisto da bi g**no radilo kako valja.
Sima Kosmos iz dalekog svemira
 
Odgovor na temu

dwarf
Beograd, Srbija

Član broj: 1328
Poruke: 336
*.yubc.net



Profil

icon Re: brisanje više recorda05.06.2002. u 08:15 - pre 265 meseci
Hm...ja sam to uvek resavao tako sto sam isao preko formulara pa zatim preko njegove elements kolekcije...Nesto tipa:

Code:

var coll = document.form1.elements;
for (var i=0;i<coll.length;i++){
    if (coll[i].type == "checkbox"){
        coll[i].checked = (coll[i].checked) ? false : true;
    }
}


Ili nesto slicno, nisam dugo to radio a ne mogu sada da nadjem kako sam to tacno sredjivao, ali tu je negde. I to radi u svim browserima i nema problema uopste sa imenima. Elem, jedini problem nastaje ako postoji vise checkboxova u formularu osim onih koji sluze za brisanje.
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: brisanje više recorda05.06.2002. u 15:16 - pre 265 meseci
Ja vec rekoh da je [ i ] specijalna funkcija na ovom forumu, pravi italic font i ne mozete koristiti "i" za index arraya u svojim programima.

Promeni to u "n" ili sta vec..
 
Odgovor na temu

Jelcha
:::Hyperspace:::

Član broj: 38806
Poruke: 80
*.vdial.verat.net.



Profil

icon Re: brisanje više recorda08.12.2005. u 23:35 - pre 222 meseci
Evo i jedan lep tutorial:

http://www.pbkill.com/index.php?page=showtutorial.php&id=26#
"Dzaba puna usta molitve ako je srce prazno" - Sv. Vladika Nikolaj Zicki
 
Odgovor na temu

[es] :: PHP :: brisanje više recorda

[ Pregleda: 4415 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.