Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usuwanie rekordów z zaznaczonych 'checkbox'
Forum PHP.pl > Forum > Przedszkole
sadistic_son
Mam taki formularz:
  1. <form action=index.php method=post>
  2. <table>
  3. <tr><td> <input type=checkbox name=check[] value=$row[1]> </td><td> Identyfikator to $row[1] </td></tr>
  4. <tr><td> <input type=checkbox name=check[] value=$row[1]> </td><td> Identyfikator to $row[1] </td></tr>
  5. <tr><td> <input type=checkbox name=check[] value=$row[1]> </td><td> Identyfikator to $row[1] </td></tr>
  6. </table>
  7. <input value=submit name=delete ></form>";
Oczywiście wszystkie wiersze tabeli są tworzone przez pętlę zczytującą z bazy danych. $row1[1] to id rekordu z bazy.

Moje pytanie brzmi jak usunąć zaznaczone rekordy. Jeśli zaznaczę np. 5 rekordów to zmienna $_POST['check'] będzie tablicą o 5 elementach. Jak skonstruować pętlę aby usuwała wszystkie rekordy z bazy które zaznaczyliśmy w checkboxie?
To mi nie działa:
  1. if(isset($_POST['delete']) && isset($_POST['check'])){
  2. $delete_id=$_POST['check'];
  3. db_connect();
  4. foreach ($delete_id as $id){
  5. $query="DELETE FROM tabela WHERE id=$id";
  6. mysql_query($query);
  7. }
  8. }
marcinpruciak
Tak nie działa?:
  1. foreach($_POST['check'] as $row){
  2. mysql_query("DELETE * FROM baza WHERE id = $row
  3. }
sadistic_son
No niestety nie. A dokładnie to nie dzieje się nic sciana.gif

Jeśli potraktuję $_POST['check'] print_r to ładnie pokazuje rekordy ale ich nie usuwa.

Zapytanie do bazy wydaje sie byc ok, wszystko wlasciwie wydaje sie byc ok. Czy ktos widzi gdzies jakis blad?
webber
może to Cię nakieruje...

http://www.theblog.ca/update-multiple-rows-mysql

ja dziś miałem problem z updatem wielu rekordów smile.gif
sadistic_son
Cytat(webber @ 11.08.2009, 21:08:25 ) *
może to Cię nakieruje...

http://www.theblog.ca/update-multiple-rows-mysql

ja dziś miałem problem z updatem wielu rekordów smile.gif

Przyznaję to jest przydatne ale nie w tym problemie.

Sprawdziłem już chyba wszystko co może powodować niedziałanie kodu. Kod zachowuje się tak jakby mysql_query nie działało. Tak jakby w ogóle nie wykonywał tej funkcji z tym, że nie wywala absolutnie żadnego erroru.
Fafu
  1. $delete_id=$_POST['check'];
  2. $id = implode("', '", $delete_id);
  3. $query="DELETE FROM tabela WHERE id IN('$id')";
  4. mysql_query($query);
webber
http://www.daniweb.com/forums/showthread.p...sql+by+checkbox

ps: yyy, kolega u góry dał to samo smile.gif
sadistic_son
Cytat(Fafu @ 11.08.2009, 21:33:12 ) *
  1. $delete_id=$_POST['check'];
  2. $id = implode("', '", $delete_id);
  3. $query="DELETE FROM tabela WHERE id IN('$id')";
  4. mysql_query($query);



Po przerobieniu na moje potrzeby wygląda to tak:
  1. $delete_id=$_POST['check'];
  2. foreach ($delete_id as $row){
  3. $row = implode("', '", $row);
  4. $query="DELETE * FROM tabela WHERE id_user IN('$row')";
  5. mysql_query($query);}
I nadal NIC sciana.gif

EDIT: Czy to ma być bez pętli?


EDIT 2: Z pętlą, bez pętli, czy tak jak na podanej wyżej stronce nadal nie działa sciana.gif sciana.gif sciana.gif sciana.gif sciana.gif
Fafu
Podałem ci gotowy przykład, który działa. Żadnej pętli nie potrzebujesz...
  1. $delete_id=$_POST['check'];
  2.  
  3. $row = implode("', '", $delete_id);
  4. $query="DELETE * FROM tabela WHERE id_user IN('$row')";
  5. mysql_query($query);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.