Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Omówienie Skryptu z checboxami
Forum PHP.pl > Forum > Przedszkole
larson7221
Witam mam do was prośbę . Prosił bym o w miarę jasny sposób umównie poniższego skryptu który podpiołem pod mój system mianowicie usuwanie newsów za pomocą checboxów nie rozumiem niektórych rzeczy mimo iż skrypt jest bardzo króciutki
  1. <?php
  2. switch($_GET['del'])
  3. {
  4. default :
  5. {
  6. if($_SESSION['logowanie'] == 'poprawne')
  7. {
  8. idnewsa();
  9. echo 'ZAZNACZID NEWSA
  10.  TYTUL
  11. AKCJA';
  12. while($r = mysql_fetch_array($query2)) // wsywietlenie newsow i zapisanie do tabeli r
  13. {
  14. $id=$r['idnews'];
  15. echo ''.$r['idnews'].''.$r['title'].'<a href=\"admin.php?change=usunnewsa&id='.$id.'\">[usun]'; // wyswietlenie idnewsa
  16. global $id;
  17. }
  18. echo '';
  19.  if($id)
  20. {
  21.  delate($id);
  22. }
  23. }
  24. break;
  25. }
  26. case &#092;"usunzaznaczone\":
  27. {
  28. if($_POST[&#092;"usun\"])
  29. {
  30. for ($i = 0; $i < count($_POST['usun']); $i++)
  31. {
  32. $id= $_POST['usun'][$i];
  33. mysql_query(&#092;"delete from NEWS where idnews='$id'\");
  34. }
  35. }
  36. header (&#092;"Location: admin.php?change=usunnewsa\");
  37. break;
  38. }
  39. }
  40. ?>
a więc ja powiem jak ja to rozumiem i czego nie rozumiem
za pomocą
  1. <?php
  2. <INPUT TYPE="checkbox" NAME="usun[]" VALUE="'.$id.'">
  3. ?>
wysyłam sobie nazwę usun[] i wartośc id newsa który leci sobie do podstrony usunznaznaczone potem skrypt
  1. <?php
  2. for ($i = 0; $i < count($_POST['usun']); $i++)
  3. {
  4. $id= $_POST['usun'][$i];
  5. mysql_query(&#092;"delete from NEWS where idnews='$id'\");
  6. }
  7. }
  8. ?>
liczy ile było znaznaczonych obiektów i wykonuje usunięcie newsow o id i teraz nie rozumiem o id nazwy usun[$i] questionmark.gif dlaczego $id newsa równa się $_POST['usun'][$i]; . skrypt działa dobrze tylko go nie rozumiem . Programuję od 2 miesiecy w PHP więc proszę o wyrozumiałoś i wytłumaczenie mi co ten skrypt robi od poczatku do konca dzięki z góry </a href=\"admin.php?change=usunnewsa&id='.$id.'\">
webdice
Proszę o dodanie tagu w tytule tematu, w innym wypadku temat zostanie zamknięty.
nospor
masz checkboxy o nazwach usun[]
[] oznaczaja, ze formularz ma wyslac tablice o nazwie usun, z wartosciami pol o nazwie usun[]
Checkboxy wysylają sie tylko zaznaczone. Tak wiec $_POST['usun'] jest tablicą zaznaczonych checkboxow. Tablica ta zawiera id, gdyz jako value checkboxow dawales wlasnie id.
Jesli nie zaznaczysz zadnego checkboxa to $_POST['usun'] wogole nie bedzie istniec.
kod co pokazales mozna zapisac znacznie krocej i optymalniej:

  1. <?php
  2. if (!empty($_POST['usun']))
  3.  mysql_query('delete from NEWS where idnews in ('.implode(',',$_POST['usun']).')');
  4. ?>

implode() laczy elementy tablicy znakiem ','
Jesli wiec w tablicy miales przykladowo 3 8 9 to zapytanie bedzie wygladalo tak:
  1. DELETE FROM NEWS WHERE idnews IN (3,8,9)
larson7221
aha dzieki chyba zrozumialem :]

a odnośnie rozwiązania które mi podałeś jest owiele lepsze :] dzięki ;]
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.