Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Usuwanie rekordów z zaznaczonych 'checkbox'
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował sadistic_son 11.08.2009, 19:48:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
marcinpruciak
post
Post #2





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

Ostrzeżenie: (0%)
-----


Tak nie działa?:
  1. foreach($_POST['check'] as $row){
  2. mysql_query("DELETE * FROM baza WHERE id = $row
  3. }


Ten post edytował marcinpruciak 11.08.2009, 19:49:02
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


No niestety nie. A dokładnie to nie dzieje się nic (IMG:style_emoticons/default/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?

Ten post edytował sadistic_son 11.08.2009, 19:57:50
Go to the top of the page
+Quote Post
webber
post
Post #4





Grupa: Zarejestrowani
Postów: 107
Pomógł: 19
Dołączył: 30.10.2007

Ostrzeżenie: (0%)
-----


może to Cię nakieruje...

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

ja dziś miałem problem z updatem wielu rekordów (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
sadistic_son
post
Post #5





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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.

Ten post edytował sadistic_son 11.08.2009, 20:31:16
Go to the top of the page
+Quote Post
Fafu
post
Post #6





Grupa: Zarejestrowani
Postów: 243
Pomógł: 33
Dołączył: 30.01.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. $delete_id=$_POST['check'];
  2. $id = implode("', '", $delete_id);
  3. $query="DELETE FROM tabela WHERE id IN('$id')";
  4. mysql_query($query);
Go to the top of the page
+Quote Post
webber
post
Post #7





Grupa: Zarejestrowani
Postów: 107
Pomógł: 19
Dołączył: 30.10.2007

Ostrzeżenie: (0%)
-----


http://www.daniweb.com/forums/showthread.p...sql+by+checkbox

ps: yyy, kolega u góry dał to samo (IMG:style_emoticons/default/smile.gif)

Ten post edytował webber 11.08.2009, 20:34:18
Go to the top of the page
+Quote Post
sadistic_son
post
Post #8





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/sciana.gif) (IMG:style_emoticons/default/sciana.gif) (IMG:style_emoticons/default/sciana.gif) (IMG:style_emoticons/default/sciana.gif) (IMG:style_emoticons/default/sciana.gif)

Ten post edytował sadistic_son 11.08.2009, 20:50:32
Go to the top of the page
+Quote Post
Fafu
post
Post #9





Grupa: Zarejestrowani
Postów: 243
Pomógł: 33
Dołączył: 30.01.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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);
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 19:27