Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][MySql]wysylanie kilku zmiennych do MySql, usuwanie newsow z bazy danych
jerzes
post 23.04.2006, 15:26:00
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 4.10.2003
Skąd: Poznań

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


Napisalem panel admina dla systemu newsow. Kazdy news ma pole check box. Jesli usuwam jednego newsa wszystko gra ale jesli zaznacze kilka newsow to nadal jest usuwany tylko jeden news. Kazdemy polu check jest przypisana wartosc ID pobrana z bazy danych i nazwa "del". Zapytanie jest wysylane na zasadzie $_GET['del']

Ten post edytował jerzes 23.04.2006, 20:04:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
LBO
post 23.04.2006, 15:32:55
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Chcesz powiedzieć, że każde pole checkbox posiada inne value, ale to samo name? Rozwiązanie jest proste. Zamień każdy
  1. name="del"

na
  1. name="del[]"

wtedy $_GET['del'] będzie tablicą. Przejeżdzasz po całej tablicy, do każdego podanego id wykonujesz zapytanie usówające go z bazy i 'voila.

cheers

Ten post edytował LBO 23.04.2006, 15:34:19
Go to the top of the page
+Quote Post
jerzes
post 23.04.2006, 16:18:05
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 4.10.2003
Skąd: Poznań

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


Niestety to nie dziala bo wywala komunikat o bledzie brak danych w tablicy dry.gif

Mam taki kod:
  1. <?php
  2. if(isset ($_GET['del'])) {
  3. print(" usunieto newsa nr $_GET[del]");
  4. $wpis = "DELETE FROM news WHERE id ='".$_GET['del']."' ";
  5. mysql_query($wpis);
  6.  
  7.  
  8. } else {
  9.  print "<form method=\"GET\">";
  10. $news=mysql_query('SELECT * FROM news ORDER BY id DESC');
  11. while ($dane = mysql_fetch_row($news)) {
  12.  
  13. print "<a href=".$_SERVER['PHP_SELF']."?id=$dane[0]>".$dane[2].
  14. <a href=".$_SERVER['PHP_SELF']."?del=$dane[0]></a><br>
  15. <i>Data: ".$dane[1]."<br>
  16.  <INPUT TYPE=checkbox NAME=\"del\" value='".$dane[0]."' >";
  17.  
  18. if(isset($_GET['id']) &&($_GET['id']==$dane[0] )) {
  19. print ("$dane[3]<br>"); };
  20.  
  21. };
  22. print "<input type=\"submit\" name=\"wyslij\" value=\"wyslij\"><input type=\"reset\">";
  23. };
  24. ?>
  25. </td></tr>
  26. </td></tr></table>


Co zrobic zeby mozna bylo zaznaczyc kilka postow i je usunac??
Go to the top of the page
+Quote Post
siemakuba
post 23.04.2006, 16:51:01
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


no przecież LBO napisał:

Cytat
wtedy $_GET['del'] będzie tablicą. Przejeżdzasz po całej tablicy, do każdego podanego id wykonujesz zapytanie usówające go z bazy i 'voila.


napierw zmien wartosc atrybutu name checkboxow z "del" na "del[]"

potem zmień ten fragment:

  1. <?php
  2. $wpis = "DELETE FROM news WHERE id ='".$_GET['del']."' ";
  3. mysql_query($wpis);
  4. ?>


na:
  1. <?php
  2.  
  3.  
  4. foreach ((array) $_GET['del'] as $newsID)
  5. {
  6.  $wpis = "DELETE FROM news WHERE id = ".(int) $newsID;
  7.  mysql_query($wpis);
  8. }
  9.  
  10. ?>
Go to the top of the page
+Quote Post
nospor
post 23.04.2006, 18:16:33
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




to mozna prosciej i jednym zapytaniem:
  1. <?php
  2.  
  3. $wpis =  'DELETE FROM news WHERE  id in ('.implode(',',$_GET['del']).')';
  4. mysql_query($wpis);
  5.  
  6. ?>

no i nalezy pamietac o nazwie del[]

ps: i prosze poprawic tytul o wlasciwy znacznik zgodnie z zasadami forum przedszkole


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jerzes
post 23.04.2006, 20:05:15
Post #6





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 4.10.2003
Skąd: Poznań

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


Wszystko dziala dzieki serdeczne biggrin.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:37