Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: checkbox i petelka...
Forum PHP.pl > Forum > PHP
Stef@n
Witam mam formularz tego typu:

  1. < table>
  2. <tr>
  3. <input type=hidden name="id_nazwiska[]" value="<? Echo "$rekord[id]"; ?>">
  4. <td>
  5. <p><span><? echo "$rekord[nazwisko] $rekord[imie]"; ?></span></p>
  6. </td>
  7. <td>
  8. <p align=center><input type="checkbox" name="tak[]" value="1"></p>
  9. </td>
  10. <td>
  11. <p><input type=text name="punkty[]" value="0" size=10%></p>
  12. </td>
  13. </tr>
  14. </table>


A teraz pentelka po wypełneniu formularza:

  1. <?  for ($i=0; $i <= 6; $i++){
  2.  if($tak[$i] == 1){
  3. $faza .= "$id_nazwiska[$i]|$punkty[$i]//<br>";
  4. }}
  5. echo "$faza";
  6. ?>


A teraz problem:
Jesli zaznacze "checkbox" zawodnika obojetnie ktorego. To formularz przechodzi do pentelk,i w petli sprawdza czy "checkbox" ma wartosc 1 i wyswietla tego zawonika. No własnie wyswietla, ale nie tego co trzeba. Tylko pierwszego zawodnika. Nawet wtedy jak nie jest ona zaznaczony!!

Prosze o pomoc, bo juz brakuje mi pomysłow co jest nie tego...
Pozdro
valhard
Cytat
<input type=hidden name="id_nazwiska[]" value="<? Echo "$rekord[id]"; ?>">


przy name="id_nazwiska[]" musisz jakoś numerować dane to tablicy np: name="id_nazwiska[$i]"

nie wiem jak masz zrobioną pętlę wyświetlającą formularz
Stef@n
petla while wyswietlajaca dane z bazy mysql
Ive
  1. <?
  2. $faza .= "$id_nazwiska[$i]|$punkty[$i]//<br>";
  3. ?>

na moje oko tu masz blad... bo wybierasz zawodnika o id $i czyli jesli tylko 1 raz sie obraca petla to $i = 0. musisz uzyc $id_nazwiska[$_POST['pole']] cos takiego... nie pamietam jak tos ie robilo dokladnie... kombinuj a wyjdzie x]
Stef@n
Cytat(valhard @ 2005-09-24 13:20:42)
Cytat
<input type=hidden name="id_nazwiska[]" value="<? Echo "$rekord[id]"; ?>">


przy name="id_nazwiska[]" musisz jakoś numerować dane to tablicy np: name="id_nazwiska[$i]"

nie wiem jak masz zrobioną pętlę wyświetlającą formularz

No zrobiłem tak ale teraz nie wiem jak wykonac petle worriedsmiley.gif, Pomocy
Kicok
Checkboxy odznaczone nie są wysyłane i php ich nie widzi. Przy takim formularzu (zakładając że masz np. 6 tych checkboxów) po wysłaniu zrobią się takie tablice:

Jeśli zaznaczone były 3 pierwsze checkboxy:
$tak[0] = 1;
$tak[1] = 1;
$tak[2] = 1;

Jeśli zaznaczone były 3 ostatnie checkboxy:
$tak[0] = 1;
$tak[1] = 1;
$tak[2] = 1;

Jeśli zaznaczone były 4 losowo wybrane checkboxy:
$tak[0] = 1;
$tak[1] = 1;
$tak[2] = 1;
$tak[3] = 1;


Jak już pewnie zauważyłeś nie da się z tego wyciągnąć które dokładnie checkboxy masz zaznaczone ;]
Pobombinuj z wartością przy value= checkboxów. Wstaw tam $rekord[id] zamiast tej jedynki, czy coś w tym stylu
Stef@n
Zrobiłem jak pisałes Kicok, ale efekt jest mniej wiecej podbny do tego co było zobacz:

  1. <table>
  2. <tr>
  3.  <td>
  4. <p><span><? echo "$rekord[nazwisko] $rekord[imie]"; ?></span></p>
  5. </td>
  6. <td>
  7. <p align=center><input type="checkbox" name="tak[]" value="<? Echo "$rekord[id]"; ?>"></p>
  8. </td>
  9. <td>
  10. <p><input type=text name="punkty[]" value="0" size=10%></p>
  11. </td>
  12. </tr>
  13. </table>


A teraz petelka:

  1. <?  for ($i=0; $i <= 6; $i++){
  2.  if($tak[$i] != ''){
  3. $faza .= "$tak[$i]|$punkty[$i]//<br>";
  4. }}
  5. echo "$faza";
  6. ?>


Problem jest taki ze nie wszystkie wartosci do punktu sa doprowadzone co wprowadziłem worriedsmiley.gif
Cytat
Checkboxy odznaczone nie są wysyłane i php ich nie widzi. Przy takim formularzu (zakładając że masz np. 6 tych checkboxów) po wysłaniu zrobią się takie tablice:

No nie koniecznie wczesniej mam zliczanie rekordów ile ich jest i za ta liczbe 6 jest podstawiona ta liczba! Przynajmniej tak chce zrobic jak zacznie działac ta petla sadsmiley02.gif
------------------------------------------------

Ej no nikt nie wie czy nie chce wiedziec sadsmiley02.gif sadsmiley02.gif
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.