Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]problem z checkbox
Forum PHP.pl > Forum > Przedszkole
canismajoris
Witam

mam taki problem:

pobieram z pliku linie za pomoca foreach. dla każdej lini tworzę checkbox który ma podawać wartość "1" jeżeli jest zaznaczony.
kiedy jednak odczytuje formularz echo wypluwa mi tylko jedną wartość a nie tyle ile jest linijek w pliku.
może ktoś rzucić okiem, będę wdzięczny.

  1. $plik4=file("../baza.txt");
  2. foreach ( $plik4 as $linia4 => $value4 ) {
  3.  
  4. $zm4=explode(";",$value4);
  5. $f1="{$zm4[4]}";
  6. $c1="{$zm4[0]}";
  7. $o1="{$zm4[1]}";
  8. $z1="{$zm4[2]}";
  9. $u1="{$zm4[3]}";
  10.  
  11. if ( $z1 == 1 ) { echo "<tr bgcolor=#CC999 ><font color=white><td>$f1</td><td>$c1 - $o1</td><td align=center>";
  12. echo '<input type=checkbox name="z'.$c1.'" value=1 checked=checked></input>';
  13. echo "</td></font></tr>";}
  14.  
  15. else { echo "<tr><td>$z1</td><td>$c1 - $o1</td><td align=center>";
  16. echo '<input type=checkbox name=z value=0></input>';
  17. echo "</td></tr>";}
  18.  
  19. echo "</td></tr></form>";
  20. }


odczyt:

$c1 pobieram jak wyżej

  1. $wynik='z'.$c1;
  2. $n=$_POST[$wynik];
  3. echo $n;


i daje mi na wyjściu jedną wartość "1" , a nie dla każdej linii.
co może być nie tak?
slawek3422
z tego co widzę to $c1 się nie zmienia, zatem wynikiem będzie grupa checkboxów o tej samej nazwie, nie dziw się, że dostajesz tylko jedną wartość po przesłaniu formularza, musisz checkboxy tak by tworzyła się z nich tablica :
  1. <input type="checkbox" name="lista[]" value="1">


W powyższym przypadku przy wystąpieniu iluśtam checkboxów i przesłaniu ich za pomocą formularza w odpowiedzi dostaniesz tablicę.
canismajoris
dalej nie chce działać, nie mam juz do tego siły.
przerobiłem to na input type=radio i działa poprawnie, tak to zostawmy.
dzieki za pomoc.
pozdrawiam.
jaslanin
A gdyby się stosowało wcięcia, inaczej mówiąc formatowało kod tongue.gif ...

  1. <?php
  2.  
  3. $plik4=file("../baza.txt");
  4.  
  5. foreach ( $plik4 as $linia4 => $value4 ) {
  6.  
  7. $zm4=explode(";",$value4);
  8.  
  9. $f1="{$zm4[4]}";
  10. $c1="{$zm4[0]}";
  11. $o1="{$zm4[1]}";
  12. $z1="{$zm4[2]}";
  13. $u1="{$zm4[3]}";
  14.  
  15. if ( $z1 == 1 ) {
  16. echo "<tr bgcolor=#CC999 ><font color=white><td>$f1</td><td>$c1 - $o1</td><td align=center>";
  17. echo '<input type=checkbox name="z'.$c1.'" value=1 checked=checked></input>';
  18. echo "</td></font></tr>";
  19. } else {
  20. echo "<tr><td>$z1</td><td>$c1 - $o1</td><td align=center>";
  21. echo '<input type=checkbox name=z value=0></input>';
  22. echo "</td></tr>";
  23. }
  24.  
  25. echo "</td></tr></form>";
  26. /*
  27. jakbys stosowal wciecia, tak jak ja teraz zrobilem
  28. (albo w inny sensowny sposób to bys zauwazyl)
  29. ze w kazdej iteracji petli foreach zamykasz nie tylko wiersz tabeli
  30. a takze formularz, mam nadzieje ze wyciagniesz wnioski na przyszlosc
  31. */
  32. } // end of foreach ( $plik4 as $linia4 => $value4 ) {
  33.  
  34. ?>
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.