Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Update bazy danych z pomocą checkbox
Forum PHP.pl > Forum > Przedszkole
rafik73
Temat niby oklepany,ale nie znalazłem jednoznacznej odpowiedzi. Jest formularz:



  1. mysql_query("SET NAMES 'utf8'");
  2. $wyk_query = mysql_query("SELECT * FROM nazwy_wyklady ORDER BY nr ASC") or die('Błąd zapytania');
  3. while($wyk_array=mysql_fetch_array($wyk_query)){
  4. $id_wykladu=$wyk_array['id_wykladu'] ;
  5. $nr=$wyk_array['nr'] ;
  6. $nazwa=htmlspecialchars($wyk_array['nazwa']) ;
  7.  
  8. echo '<form action="y.php" method="post"> ';
  9.  
  10. echo '<span style="padding-left:5px"><input type="text"
  11. style="text-align:left;font-size:14px;width:50px;height:29px;background-color : White ;
  12. color : black;border-width:1px;border-style:ridge;border-color:rgb(208,208,208);" name="nr[]" value="'.$nr.'"></span>';
  13.  
  14. echo '<span style="padding-left:5px"><input type="text"
  15. style="text-align:left;font-size:14px;width:500px;height:29px;background-color : White ;
  16. color : black;border-width:1px;border-style:ridge;border-color:rgb(208,208,208);" name="nazwa[]" value="'.$nazwa.'"></span>';
  17.  
  18. echo '<span style="padding-left:5px"><input type="checkbox" name="delete[]" value="'.$id_wykladu.'"> </span>';
  19.  
  20. echo '<br>';
  21.  
  22. }
  23. echo '<p style="float:left;padding-left:350px;padding-bottom:20px"><button type="submit" class="button_metro" style="float:left;width:80;height:40px;background-color:White;color:Tomato">
  24. ZMIEŃ</button></p>';
  25. echo '</form> ';



oraz plik, który odbiera i aktualizuje:




  1. //$id_wykladu=$_POST['id_wykladu'];
  2. $nr=$_POST['nr'];
  3. $nazwa=$_POST['nazwa'];
  4. $checkbox=$_POST['delete'];
  5.  
  6. //for($i=0;$i<count($checkbox);$i++){
  7. //$del_id = $checkbox[$i];
  8.  
  9. foreach($checkbox as $id)
  10. echo $id.'<br>';
  11.  
  12. foreach($nazwa as $name)
  13. //$name = $nazwa[$i];
  14. //$numer = $nr[$i];
  15.  
  16. echo $name.'<br>';
  17.  
  18. foreach($nr as $numer)
  19. echo $numer.'<br>';
  20. //echo $nr.'<br>';
  21.  
  22. /*
  23.   mysql_query("SET NAMES 'utf8'");
  24.   mysql_query("UPDATE `nazwy_wyklady` SET `nazwa`='$nazwa' WHERE `id_wykladu`='$del_id'")
  25.   or die('Błąd zapytania');
  26.   }
  27.   header( 'Location: z.php' ) ;
  28.   exit();
  29.   */
  30. // }
  31.  

efekt jest taki, że po zaznaczeniu kilku rekordów przesyła poprawnie $id_wykladu, czyli zaznaczone wartości,
zaś $nazwa oraz $nr wyświetla całą zawartość tabeli. Jak przypisać zawartość $nazwa i $nr do $id_wykladu.
Pyton_000
Możesz jaśniej?
rafik73
Założenie jest takie,że w formularzu mają być wyświetlane dane z tabeli, przy kazdym rekordzie ma być checkbox. Jednym wspólnym przyciskiem submit formularz ma wysyłać zaznaczone checkbox'ami rekordy do pliku,w którym za pomocą update jest aktualizowana tabela. W podanym listingu formularz wysyła poprawnie $id_wykladu, czyli to co jest przyporzadkowane do checkbox,według zaznaczenia , zaś jeśli chodzi o komórki $nr oraz $nazwa to wysyła wszystkie rekordy z tabeli,bez przyporządkowana do checkbox

$id_wykładu. $nr. $nazwa. Checkbox
1. 12. aaa. V
2. 13. Bbb. -
3. 14. Ccc. V
4. 15. ddd. -
5. 16. eee. V

Po submit formularz wysyła:
$id_wykladu: 1,3,5
$nr: 12,13,14,15,16
$nazwa: aaa,Bbb,Ccc,ddd,eee
Pyton_000
  1. ?>
  2. <form action="y.php" method="post">
  3. <span style="padding-left:5px"><input type="text"
  4. style="text-align:left;font-size:14px;width:50px;height:29px;background-color : White ;
  5. color : black;border: 1px ridge rgb(208,208,208);" name="nr[<?=$id_wykladu?>]" value="<?=$nr?>"></span>
  6.  
  7. <span style="padding-left:5px"><input type="text"
  8. style="text-align:left;font-size:14px;width:500px;height:29px;background-color : White ;
  9. color : black;border: 1px ridge rgb(208,208,208);" name="nazwa[<?=$id_wykladu?>]" value="<?=$nazwa?>"></span>
  10.  
  11. <span style="padding-left:5px"><input type="checkbox" name="delete[<?=$id_wykladu?>]" value="<?=$id_wykladu?>"> </span>
  12. <br>
  13. <?php
rafik73
Dziękuję, Spróbuję po powrocie do domu.

Rozważałem jeszcze:
Input type="hidden" name="x" value="'.$id_wykładu.'"
A potem
Input type="text" name="nazwa[x]" value="'.$nazwa '"
Itd.
nospor
JA tylko dodam, ze o to:
echo '<form action="y.php" method="post"> ';
ma sie znajdowac przed WHILE a nie w srodku WHILE.... takie tam podstawy HTML.
rafik73
Coś dalej nie tak, wyświetla Array w polu $nr i $nazwa

a jak próbuje print_r() w pętli to wywala wszystkie rekordy a nie zaznaczone...

...pomysły?
nospor
A skad pomysl, ze nr i nazwa pojawią sie tylko zaznaczone? To są normalne inputy i one zawsze sie wysylają, To tylko checkboxy wysylają sie zaznaczone
rafik73
Taki efekt chciałbym uzyskać, wysyłanie wartości wszystkich pól zaznaczonych rekordów.

Usuwanie to pikuś bo potrzebne tylko id zapisane w tablicy checkboxa

Mam listę powiedzmy 100 wykładów i chcę edytować 20, pojedyńczo się zajeżdże, a tak zaznaczam checkboxy przy rekordach do edycji, edytuje, klikam submit i robi się masowo
nospor
Toz jesli zrobiles jak kazal Pyton, to sprawe masz zalatwioną.... sla ci sie checkboxy tylko zaznaczaone, czyli masz ich ID. Majac ich ID wybierasz z post tylko te nri nazwa, ktore mają to ID. No w czym problem?
rafik73
No tak,ale nr i nazwa i tak musze POSTować bo podlegają edycji, a jak je wyłuskać po odebraniu ?
nospor
Toc juz pisalem: jesli zrobiles jak napisal Pyton, to kazde z nich ma takie sam index, co wyslany checkbox. Majac indeksy masz dostep do wszystkiego
rafik73
Załatwione. Serdeczne dzięki.

  1. $nr=$_POST['nr'];
  2. $nazwa=$_POST['nazwa'];
  3. $checkbox=$_POST['delete'];
  4.  
  5. foreach($checkbox as $id) {
  6. echo $id.'<br>';
  7. echo $nazwa[$id].'<br>';
  8. }


Po prostu uparłem się, żeby powiazać wszystko w formularzu i wysłać wyselekcjonowane. Nie ten tor i kierunek....Pozdrawiam
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.