Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]problem z polami chceckbox formularza
hubson87
post 7.05.2011, 22:49:27
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 8
Dołączył: 9.02.2011
Skąd: Wrocław

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


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
Go to the top of the page
+Quote Post
Kemsan
post 7.05.2011, 23:24:43
Post #2





Grupa: Zarejestrowani
Postów: 33
Pomógł: 6
Dołączył: 30.06.2008
Skąd: Bytom

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


A zrób sobie tak: print_r( $_POST['idt'] ); $_POST['idt'] jest tablicą, więc skorzystaj z foreach()
Go to the top of the page
+Quote Post
Bags_Bunny
post 8.05.2011, 00:34:49
Post #3





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


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. .....


Ten post edytował Bags_Bunny 8.05.2011, 00:38:48


--------------------
rm -rf /*
Go to the top of the page
+Quote Post
hubson87
post 8.05.2011, 08:06:37
Post #4





Grupa: Zarejestrowani
Postów: 83
Pomógł: 8
Dołączył: 9.02.2011
Skąd: Wrocław

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


Ok dzięki za dobre wyjaśnienie problemu
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: 13.06.2025 - 18:04