Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][MySql]wysylanie kilku zmiennych do MySql
Forum PHP.pl > Forum > Przedszkole
jerzes
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']
LBO
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
jerzes
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??
siemakuba
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. ?>
nospor
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
jerzes
Wszystko dziala dzieki serdeczne biggrin.gif
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.