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

brisanje više recorda

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

[ Pregleda: 1862 | Odgovora: 9 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

fimalbonegaculo
Igor Milovanović
developer, sys-admin
beograd

Član broj: 395
Poruke: 157
62.41.25.*

ICQ: 81662016
Sajt: www.linkedin.com/in/igorm..


Profil

icon brisanje više recorda29.05.2002. u 08:28

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"
29.05.2002. u 08:28 

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

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

Sajt: dejan.lekic.org


Profil

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

Divine
Miloš Šaković
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
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...
30.05.2002. u 18:48 

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
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
03.06.2002. u 18:12 

Divine
Miloš Šaković
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
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...
03.06.2002. u 19:19 

dwarf
Beograd, Srbija

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



Profil

icon Re: brisanje više recorda03.06.2002. u 20:01
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.
03.06.2002. u 20:01 

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
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
04.06.2002. u 16:44 

dwarf
Beograd, Srbija

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



Profil

icon Re: brisanje više recorda05.06.2002. u 08:15
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.
05.06.2002. u 08:15 

Gojko Vujovic
Juniper Networks
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13056
*.gojko.ss.

Sajt: www.gojkovujovic.com


Profil

icon Re: brisanje više recorda05.06.2002. u 15:16
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..
05.06.2002. u 15:16 

Jelcha
:::Hyperspace:::

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



Profil

icon Re: brisanje više recorda08.12.2005. u 23:35
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
08.12.2005. u 23:35 

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

[ Pregleda: 1862 | Odgovora: 9 ]

Postavi temu Odgovori

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