Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlenie listy checkboxów
Forum PHP.pl > Forum > PHP
dareckiphp
Witam, mam kłopot z wyświetleniem listy zaznaczonych checkboxów.
Wszystkie możliwe checkboxy wyświetlane są w następujący sposób:
  1. <? 
  2. while (@$sek = mysql_fetch_assoc($lista_sektorow)) { ?>
  3. <label><input type=\"checkbox\" name=\"<? print &#092;"sektor[$sek[id]]\"?>\" value=\"<? print &#092;"$sek[id]\";?>\" ><? print &#092;"$sek[nazwa]\";?></label>
  4. <? } ?>

... prawdopodobnie coś już tutaj skopałem. Tak czy inaczej, w żaden sposób nie mogę wyświetlić informacji, jakie checkboxy ze wszystkich wyświetlonych zostały zaznaczone.
Macie jakiś pomysł.
sf
1) $sek['nazwa']; $sek['id']

2) sektor[$sek[id]] - co to jest ? to ma wyjsc np. sektor[2] ? to nie jest tablica jesli miala byc

3) po co uzywasz @ ? tongue.gif skoro slabo Ci idzie to najlepiej niech sie wyswietla wszystko co moze
rogrog
Cytat(sf @ 2004-08-06 16:12:18)
2) sektor[$sek[id]] - co to jest ? to ma wyjsc np. sektor[2] ? to nie jest tablica jesli miala byc

nie rozumiem tego pytania....

przecież w tego wyniku będzie miał tablicę i chbya takie jest założenie
dareckiphp
no właśnie jak zauważyliście chciałem otrzymać tablicę. A ma kto może pomysł jak to zrobić?
fones
Własciwie nie wiadomo czego tak naprawde chcesz... w 3 linijce w polu 'name' chciałeś podac nazwe chceckboxu, starales sie jak mogles i z tego co tu widze (ale to zle jest) to wstawiles pusta zmienna z tablicy 'immiennej', a gdzie jej wartość questionmark.gif?

Ale po co Ci ta tabela to nie mam pojecia... dziwny problem ;p
pozno jest, nie chce mi sie juz myslec...
pozdro
sf
Cytat(rogrog @ 2004-08-06 17:04:32)
Cytat(sf @ 2004-08-06 16:12:18)
2) sektor[$sek[id]] - co to jest ? to ma wyjsc np. sektor[2] ? to nie jest tablica jesli miala byc

nie rozumiem tego pytania....

przecież w tego wyniku będzie miał tablicę i chbya takie jest założenie

Możesz mi dać przykład wykorzystania tej tablicy?

  1. <form action=\"cos.php\" method=\"post\">
  2. <input type=\"checkbox\" name=\"sektor[2]\" value=\"test\" />
  3. <input type=\"submit\" value=\"kliknij\" />
  4. </form>
  5.  
  6. <?php echo $_POST['sektor']['2']; ?>


Bo to nie działa tongue.gif

Cytat
checkboxes
    Checkboxes (and radio buttons) are on/off switches that may be toggled by the user. A switch is "on" when the control element's checked attribute is set. When a form is submitted, only "on" checkbox controls can become successful.

    Several checkboxes in a form may share the same control name. Thus, for example, checkboxes allow users to select several values for the same property. The INPUT element is used to create a checkbox contro


checkbox nie można przypisać wartości, ponieważ przyjmuje on wartość gdy jest zaznaczony i wynosi ona wtedy "on" w innym przypadku nic

parametr "checked" wykorzystuje się do zaznaczenia checkboxa
fones
Czyli głupie pytanie... dziekujemy ;p
rogrog
Cytat(sf @ 2004-08-07 07:20:07)
checkbox nie można przypisać wartości, ponieważ przyjmuje on wartość gdy jest zaznaczony i wynosi ona wtedy "on" w innym przypadku nic

no chyba raczesz żartować.

checkbox, jeżeli jest zaznaczony, przyjmuje swoją wartość ( parametr value ), a jeżeli jest niezaznaczony, po prostu go nie ma ( isset zwróci false )

tamten fragment właśnie o tym mówi
dareckiphp
Chyba uproszczę zadanie, bo się sam już zakręciłem:
Za pomocą pętli wyświetlam listę checkboxów, powiedzmy o nazwach od 1 do 5.
  1. <? for ($i=1; $i<=5; $i++) { ?>
  2. <td width=\"36\"><input name=\"\" type=\"checkbox\" id=\"<? print &#092;"$i\";?>\" value=\"ok\"></td><td width=\"64\"><? print &#092;"$i\";?></td>
  3. <? } ?>

Jak teraz wyświetlić informację, które z checkboxów w formularzu zostały zaznaczone?
rogrog
  1. <?php
  2.  
  3. for ($i=1; $i<=5; $i++){
  4.  
  5. if($_GET[$i] == 'ok' ) { echo 'Czekboks '.$i.' zaznaczony'; }
  6. else { echo 'Czekboks '.$i.' nie zaznaczony'; }
  7.  
  8. }
  9.  
  10. ?>
dareckiphp
Tak, dzięki - pętelka chodzi prawidłowo, pozostał jednak problem przy ściąganiu danych z bazy.
  1. $lista_sektorow = mysql_query ("SELECT nazwa FROM sektor");

  1. <? while ($sek = mysql_fetch_assoc($lista_sektorow)) { ?>
  2. <label><input type=\"checkbox\" name=\"$sek[nazwa]\"; ?>\" value=\"ok\" ><? print &#092;"$sek[nazwa]\";?></label><? } ?>

i teraz wyświetlamy wszystko...
  1. <?                 
  2. if (isset($_POST['Submit'])) {
  3. while ($sek = mysql_fetch_assoc($lista_sektorow_)) {
  4. ...
  5. }} ?>

No i wszystkie moje pomysły jak to zrobić skończyły się niczym. Pomóżcie
sf
Cytat(rogrog @ 2004-08-07 08:43:51)
Cytat(sf @ 2004-08-07 07:20:07)
checkbox nie można przypisać wartości, ponieważ przyjmuje on wartość gdy jest zaznaczony i wynosi ona wtedy "on" w innym przypadku nic

no chyba raczesz żartować.

checkbox, jeżeli jest zaznaczony, przyjmuje swoją wartość ( parametr value ), a jeżeli jest niezaznaczony, po prostu go nie ma ( isset zwróci false )

tamten fragment właśnie o tym mówi

sorry, ale wydaje mi sie, ze taknapisalem

- nie przypisujemy wartosci
- jesli jest zaznaczony zwaraca wartosc on
- jesli nie to nic

@dareckiphp: nie valuje="ok", ale checked np.

  1. <input type="checkbox" name="sektor" checked />


można też tak

  1. <input type="checkbox" name="sektor" checked="checked" />
rogrog
@sf: zupełnie inaczej piszesz...

Cytat
- nie przypisujemy wartosci
- jesli jest zaznaczony zwaraca wartosc on
- jesli nie to nic


a ja mówię tak (i mam rację... bo tak działa u mnie wiele skryptów :] ):
- przypisujemy wartość (value="costam")
- jesli jest zaznaczony zwaraca wartosc którą przypisaliśmy
- jesli nie to nic


-----

co do rozwiązania:

lista z checkboksami

  1. <?php
  2.  
  3. $lista_sektorow = mysql_query ( &#092;"SELECT nazwa FROM sektor\" );
  4.  
  5. while ( $sek = mysql_fetch_assoc ( $lista_sektorow ) ) {
  6.  echo '<label><input type=\"checkbox\" name=\"sektory['. $sek['nazwa'] .']\" value=\"ok\">'. $sek['nazwa'] .'</label>';
  7.  
  8. }
  9.  
  10.  
  11. ?>


wyświetlenie:


  1. <?php
  2.  
  3. if( isset ( $_POST['sektory'] ) ) { //powinnismy dostac tablice sektorow
  4.  
  5. $lista_sektorow = mysql_query ( &#092;"SELECT nazwa FROM sektor\" );
  6.  
  7. while ( $sek = mysql_fetch_assoc ( $lista_sektorow ) ) {
  8.  
  9.  echo 'Sektor '. $sek['nazwa'] . ' ';
  10. if($_POST['sektory'][$sek['nazwa']] == 'ok') { echo 'tak'; }
  11. else { echo 'nie'; }
  12.  echo '<br>'; 
  13.  
  14. }
  15.  
  16. }
  17.  
  18. ?>
sf
Hm, rzeczywiście musze przyznać się do błedu. Można wymusić by zwrócił wartość zapisaną w value zamiast standardowego "on".
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.