Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]problem z polami chceckbox formularza
Forum PHP.pl > Forum > Przedszkole
hubson87
Witam mam mały problem. Mam formularz do przyjmowania towarów na magazyn. Prz każdej pozycji jest chcecbox, który ma odpowiadać za to czy towar zostanie przyjęty czy też nie

Kawałek kodu
  1. while($r = mysql_fetch_assoc($wynik)) {
  2. ....
  3. echo "<td> <input type='checkbox' name ='przyj[]' value='1' checked = 'checked'> </td>";
  4. .....


I teraz w czym problem. Np mam towary od id od 1 do 10. I np odznacze sobie chceckbox przy towarze o id=5. Po zatwierdzeniu okazuje sie ze nie zostal przyjety towar o id=10 czyli ostatni rekord.
Jeżeli odznacze 2 dowolne pozycje to nie przyjmie mi 2 ostatnich.

Fragment kodu po submicie
  1. for($i=0;$i<count($_POST["idt"]);$i++) {
  2. if ($przyj[$i] == 1){
  3. $magazyn=$mag;
  4. $wstaw = "UPDATE dostawa_inf SET status ='1' WHERE id_towar ='$idt[$i]';";
  5. $rezultat = mysql_query($wstaw, $polacz);
  6. }
  7. else
  8. {
  9. $magazyn=$id2;
  10. $wstaw = "UPDATE dostawa_inf SET status ='2' WHERE id_towar ='$idt[$i]';";
  11. $rezultat = mysql_query($wstaw, $polacz);
  12. }

Z góry dzięki za pomoc
Kemsan
A zrób sobie tak: print_r( $_POST['idt'] ); $_POST['idt'] jest tablicą, więc skorzystaj z foreach()
Bags_Bunny
To de facto nie jest problem wink.gif. Po prostu tak to zakodziłeś. Zauważ, że on to wrzuca do tablicy jeden po drugim. Niezaznaczony checkbox to nieistniejący checkbox (w uproszczeniu).

Zobrazuje to w PHP.
Mamy coś takiego:
  1. $przyj[] = 1;
  2. $przyj[] = 1;
  3. $przyj[] = 1;
  4. $przyj[] = 1;
  5. $przyj[] = 1;
  6. $przyj[] = 1;
  7. $przyj[] = 1;
  8. $przyj[] = 1;
  9. $przyj[] = 1;
  10. $przyj[] = 1;

Odznaczenia checkboksa to tak, jak zakomentowanie jednej z tych linijek. Jaka różnica między zakomentowaniem piątej a dziesiątej? Żadna.

Żeby uzyskać to, co chcesz, podawaj id jawnie, np:.
  1. $przyj[1] = 1;
  2. $przyj[2] = 1;
  3. $przyj[3] = 1;
  4. $przyj[4] = 1;
  5. $przyj[5] = 1;
  6. $przyj[6] = 1;
  7. $przyj[7] = 1;
  8. $przyj[8] = 1;
  9. $przyj[9] = 1;
  10. $przyj[10] = 1;

Teraz już ma znaczenie, którą linijkę zakomentujesz i w ten sam sposób zadziała to w przypadku checkboksów. Jeśli odznaczysz checkboksa 5 to tak, jakbyś zakomentował linijkę 5. Czyli używasz
  1. isset($_POST['przyj'][$i])

żeby sprawdzić czy dany checkbox został zaznaczony.

Przykład generowania checkboksów:
  1. $i = 0;
  2. while($r = mysql_fetch_assoc($wynik)) {
  3. $i++;
  4. ....
  5. echo '<td><input type="checkbox" name ="przyj['.$i.']" value="to w sumie nie ma znaczenia" checked = "checked"></td>';
  6. .....
hubson87
Ok dzięki za dobre wyjaśnienie problemu
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.