![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 14 Pomógł: 2 Dołączył: 22.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem z przekazywaniem wartości checkbox przez formularz. mam pętlę która generuje w php formularz z kilkoma plami tekstowymi i checkbox-ami : CODE for ($i=1;$i<4;$i++) { echo "<input type='text' name='tekst[]' value='tekst'>"; echo "<input type='checkbox' name='zapisz[]' value='tak'>"; } echo "<input type='submit' value='Zapisz'>"; jak zaznacze np 2 checkboxy i przekazuję dane do następnej strony to otrzymuję : CODE Array ( [id] => Array ( [0] => tekst [1] => tekst [2] => tekst [3] => tekst ) Array ( [zapisz] => Array ( [0] => tak [1] => tak ) tak jakby nie brał pod uwagę niezaznaczonych checkbox-ów ![]() co zrobić aby przekazać wartość wszystkich checkbox-ów? i otrzymać tabicę : CODE Array ( [zapisz] => Array ( [0] => tak [1] => nie [2] => tak [3] => nie )
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 10.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
ja w checkbocxach nigdy nie używałem VALUE
z tego co kojarzę to przy przekazywaniu checkboxy mają wartość true false z tym, że jedna uwaga - wartości te sa tekstami i żeby przyrównywać do false ale 'false' - czyli do tekstu nie do wartości a przy wypełnaniu formularza to gdy ma być checkbox zaznaczony to if(cos tam) $chck='checked'; else $chck=''; echo "<input type='checkbox' name='zapisz[]' $chck>"; Ten post edytował juzwa 18.10.2007, 08:20:16 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Przypuśćmy że mam checkboxa
Kod <input type="checkbox" name="test" />
Kod <input type="checkbox" name="test" checked /> to może i jest poprawna, ale chyba nie jest dobrze interpretowana w każdej przeglądarce, najlepiej więc się zabezpieczyć i zrobić coś takiego:Kod <input type="checkbox" name="test" checked="checked" /> A co do twojego problemu, to jak możesz się domyślić po przeczytaniu tego co napisałem, niezaznaczone checkboxy NIE SĄ w ogóle przekazywane. Dlatego rozwiązaniem Twojej zagadki było by ponumerowanie wszystkich checkboxów w taki sposób: Kod <input type="checkbox" name="zapisz[1]" value="tak" /> //atrybut value możesz usunąć wtedy będziesz miał domyślnie 'on' <input type="checkbox" name="zapisz[2]" value="tak" /> <input type="checkbox" name="zapisz[3]" value="tak" /> <input type="checkbox" name="zapisz[4]" value="tak" /> <input type="checkbox" name="zapisz[5]" value="tak" /> Później po wysłaniu formularza sprawdzasz które numerki z tablicy $_POST['zapisz'][x] mają wartość 'tak' lub 'on' i już wiesz które zostały zaznaczone a które nie. Można też prościej - sprawdzać tylko isset($_POST['zapisz'][x]) dla każdego z pól. x - numerek checkboxa. Ten post edytował krowal 18.10.2007, 09:53:15 -------------------- Nawet świnka może wejść na drzewo kiedy jest chwalona :)
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 14 Pomógł: 2 Dołączył: 22.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Drodzy Forumowicze
Dziękuje za podpowiedzi . Chwilkę posiedziałem nad tym i : CODE for ($i=1;$i<4;$i++) { echo "<input type='text' name='tekst[]' value='tekst'>"; echo "<input type='checkbox' name='zapisz[{$i}]' value='tak'>"; } echo "<input type='submit' value='Zapisz'>"; a nstępnie : CODE for ($i=0;$i<count($_POST['zapisz']);$i++) { $wybrany = key($_POST['zapisz']); $sql = "UPDATE ks_mecz SET bramki_gosp='{$_POST['bgosp'][$wybrany]}', bramki_gosc='{$_POST['bgosc'][$wybrany]}', status='1' WHERE id_mecz='{$_POST['id'][$wybrany]}'"; $result = mysql_query($sql) or die ($sql."<br>".mysql_errno().": ".mysql_error()); next($_POST['zapisz']); } wyjaśnienie : checkbox przekazywany jest z numerem indexu. jak pozostawimy <input type='checkbox' name='zapisz[]' value='tak'> to wartości zostaną zapisane w kolejności od 0. nastepnie w pętli sprawdzamy jakie to numery i dla każdego numeru indexu wybieramy z pozostałych tablic wartości o danym indexie. Pozdrawiam, Ten post edytował bryzas 18.10.2007, 18:38:38 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 04:41 |