Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]problem z checkbox
canismajoris
post 21.03.2012, 10:25:17
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

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


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?
Go to the top of the page
+Quote Post
slawek3422
post 21.03.2012, 10:48:13
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

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


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ę.
Go to the top of the page
+Quote Post
canismajoris
post 21.03.2012, 16:22:20
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

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


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.
Go to the top of the page
+Quote Post
jaslanin
post 21.03.2012, 21:43:57
Post #4





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


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


Ten post edytował jaslanin 21.03.2012, 21:45:59


--------------------
Good luck and happy PHP'ing
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: 17.06.2025 - 12:49