Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak sprawdzić, które checkboksy są wciśnięte
Forum PHP.pl > Forum > Przedszkole
Anonymous
Mam kilka checkboksów, lecz nie weim ile (wygenerue mi je php) i teraz chcę
sprawdzić, które są zaznaczone? Myślałem o kilku możliwościach, ale wszystkie
są złe:

1. Nazywanie każdego checkboksa tak sam, zato nadawanie im różnych wartości
(np. kolejnych numerów)
i w odpoiwedzi na formularz dostaję check=1&check=2&check3 czyli do zmiennej
check będzie wpisane 3 i da mi to tylko tyle, że będę wiedział, że został
wciśniety 3, a w rzeczywistości został wciśnięty checkboks 1, 2 i 3

2. Nazywanie wszystkich checkboksów inaczej (za każdym obejściem pętli $i++ i
<checkboks name="check"$i" value="tak"> i teraz gdy wcisnę check 1, 2 i 3
otrzymam check1=tak&check2=tak&=check3=tak i nadal mi to nic nie daje :/ Może
powienienem skonstruować jakąś pętlę (np. for) która sprawdzi mi ile jest pul i
które zostały wciśnięte. Tylko jak? :/
borec
jeden motyw, chcesz sprawdzic przed wyslaniem formularza czy po w skrypcie?

jesli to 1 to JavaScript, jesli drugie:

[xml:1:17eb42e9b5]<input type="checkbox" name="cos1" value="1">
<input type="checkbox" name="cos2" value="1">
<input type="checkbox" name="cos3" value="1">[/xml:1:17eb42e9b5]

[php:1:17eb42e9b5]<?php

if ($_POST['cos1']) {
echo 'Pierwszy wcisniety';
}

if ($_POST['cos2']) {
echo 'Drugi wcisniety';
}

if ($_POST['cos3']) {
echo 'Trzeci wcisniety';
}

?>[/php:1:17eb42e9b5]
kszychu
Rozwiązanie borca jest dobre, ale nie uwzględnia jednego czynnika: nie wiemy ile jest checkboxów.
Oto inne rozwiązanie.
Nazwij wszystkie checkboxy tak: box[$i]
Po wysłaniu w urlu będziesz miał plik.php?box[1]=x&box[3]=true&....&box[n]=costam

Teraz w php masz tablicę $box; możesz sprawdzić jej wielkość (ilosc wysłanych checkboxów), i wartości tych wysłanych checkboxów.
Wtedy możesz sprawdzanie, które podał borec zrobić w pętli for().
TomASS
Dokładnie! Dzięki zaraz sprawdzę, właśnie próbowałem użyć do tego celu tablicy, ale coś nie mogłem sobie poradzić. Sprawdzę i dam znać. Dzięki

Acha. Poprzednigo posta to ja pisałem tongue.gif
TomASS
Acha, a co z $zmienna = $_REQUEST['zmienne']? czy mam zrobić pętlę która mi to wypisze n razy? tylko jak? czy taka deklaracja jest wogóle tutaj potrzebna? Dzięki za pomoc
TomASS
Zrobiłem coś takiego


<input name="check[$nr]" value="tak" type="checkbox" />


i otrzymuje take oto coś


check%5B1%5D=tak&check%5B7%5D=tak


noi co mi z tego? W czym tkwi błąd, że nie otrzymałem tablicy? Jak powinien wyglądać poprawnie kod?
hwao
[php:1:f8d799838c]<?php
$ile = '100'; // Wydobywasz skads ile tych checkbox'ów ma być

if( empty( $_POST['check'] ) )
{
echo '<form method="post">'."nr";

for($i=1; ($ile+1) > $i; $i++ )
{
echo ' '.$i.'.<input name="check['.$i.']" value="tak" type="checkbox" /> <br/>'."nr";
}

echo ' <input type="hidden" value="'.$ile.'" name="ile" />'."nr";
echo ' <input type="submit" value="sprawdz" name="submit" />'."nr";
echo '</form>';
}
else
{
$arrSelect = array();

foreach( $_POST['check'] AS $n => $v )
{
$arrSelect[] = $n;
echo 'Zaznaczony '.$n.'<br/>'."nr";
}

for($i=1; ($_POST['ile']+1) > $i; $i++ )
{
if( !in_array( $i, $arrSelect ) )
{
echo 'Nie zaznaczone '.$i.'<br/>'."nr";
}
}
}

?>[/php:1:f8d799838c]

Prosze...
webmaniak
Witam!
Mam problem z checkboxami, i to nie od dziś.
  1. function lista_narzedzi() //funkcja wyswietlajaca liste narzedzi
  2. {
  3. $i = 1;
  4. $lista_narzedzi=mysql_query("SELECT * FROM narzedzia ORDER BY id_narzedzia ASC");
  5. $ilosc=mysql_num_rows($lista_narzedzi);
  6. echo '<form action="" method="POST"><table border="2">';
  7. echo '<tr>
  8. <td>Lp.</td>
  9. <td>Nazwa skrĂłcona</td>
  10. <td>Nazwa pełna</td>
  11. <td>Opis</td>
  12. <td>Ilość</td>
  13. <td>Statut</td>
  14. </tr>';
  15.  
  16. while($pokaz_narzedzia=mysql_fetch_array($lista_narzedzi))
  17. {
  18. $id_narzedzia=addslashes($pokaz_narzedzia['id_narzedzia']);
  19. $nazwa_skrocona=addslashes($pokaz_narzedzia['nazwa_skrocona']);
  20. $nazwa_pelna=addslashes($pokaz_narzedzia['nazwa_pelna']);
  21. $opis=addslashes($pokaz_narzedzia['opis']);
  22. $ilosc_narz=addslashes($pokaz_narzedzia['ilosc_narz']);
  23. $statut=addslashes($pokaz_narzedzia['statut']);
  24.  
  25. echo '<tr>
  26. <td>'.$id_narzedzia.'</td>
  27. <td>'.$nazwa_skrocona.'</td>
  28. <td>'.$nazwa_pelna.'</td>
  29. <td>'.$opis.'</td>
  30. <td>'.$ilosc_narz.'</td>
  31. <td>'.$statut.'</td>
  32. <td>';
  33. if($_GET['page']==lista_narzedzi);
  34. elseif($_GET['page']==wypozycz)
  35. {
  36. echo '<input type="checkbox" name="narzedzie['.$i.']" />';
  37. //echo '<input type=checkbox name="narzedzie'.$id_narzedzia.'" />';
  38. }
  39. elseif($_GET['page']==usun) echo '<a href="index.php?page=usun_narzedzie&id_narzedzia='.$id_narzedzia.'">usun_narzedzie</a>';
  40. elseif($_GET['page']==zmien) echo '<a href="index.php?page=zmien_narzedzie&id_narzedzia='.$id_narzedzia.'">Modyfikuj dane narzedzia</a>
  41.  
  42. </td>
  43.  
  44. </tr>';
  45.  
  46. $i++;
  47. }
  48. echo '</table>';
  49.  
  50. //echo '<input type="checkbox" name="nazwa" />';
  51. echo '<input type="submit" name="wypozycz1" value="wypozycz" />';
  52. ?>
  53. <?php
  54. echo '</form>';
  55. if(isset($_POST['wypozycz1']))
  56. {
  57. for($_POST['narzedzie('.$i.')']=1; $_POST['narzedzie('.$i.')']<=$ilosc; $_POST['narzedzie('.$i.')']++)
  58. {
  59. if($_POST['narzedzie(['.$i.'])'])
  60. echo 'checkbox zaznaczony<br>';
  61. else echo 'checkbox nie zaznaczony<br>';
  62. }
  63. }
  64.  
  65. }

Teraz słów kilka w celu wytłumaczenia. Mam na stronie tabele. Chce tam zaznaczyć określone pole i zrobić tak, żeby po naciśnięciu przycisku było wiadome który checkbox został zaznaczony. Aktualnie działa tak że jak zaznaczę którykolwiek checkbox to pokazuje że wszystkie są zaznaczone, a jak żadnego nie dam to że wszystkie są niezaznaczone.Wiem że to powszechny problem, zresztą był opisywany w pierwszym poście tego tematu, tu mała dygresja-szukałem na forum-inaczej nie znalazłbym tematu z 2004 roku smile.gif, piszę tu bo jest najbardziej zbliżony do mojego. To rozwiązanie podane przez @hwao-nie rozumiem jego działania, dlatego chce zrobić żeby moja wersja działała. Bardzo proszę o pomoc, z checkboxami męczę się ... pół roku, naprawdę, oczywiście nie dzień w dzień, ale unikam ich jak ognia, a tu chyba muszę. Wiem że to rzadka praktyka tego forum podawanie gotowego rozwiązania, ale naprawdę się z tym męczę już długi czas i nie wiem co jest nie tak, gdzie szukać błędu, a czas pomału mnie nagli, żeby to zrobić.
Proszę o pomoc.


Ponawiam prośbę o pomoc, jeśli nie jest możliwe uzyskanie gotowego kodu, to chociaż proszę o wskazanie gdzie tu jest błąd, nakierowanie, cokolwiek co pomoże.
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.