Я просто хочу, чтобы php определял, установлен ли флажок, но я столкнулся с проблемой получения правильного возврата. Помоги пожалуйста.
Мой html-код
<label> <input name="Language" type="checkbox" id="aa" checked="checked" /> One</label> <label> <input name="Language" type="checkbox" id="bb" />Two</label> <label> <input type="checkbox" name="Language" id="cc" />Three</label>
Я передаю значения php методом $ _GET
мой php-код:
$aa=$_GET["aa"]; $bb=$_GET["bb"]; $cc=$_GET["cc"]; echo $aa."<br>"; echo $bb."<br>"; echo $cc."<br>";
вывод true false false
Затем я хочу просто определить, проверяется ли каждая ячейка, и если да, сделайте что-нибудь.
if ($aa == true) { $abc="checked";} else { $abc="not checked"; } if ($bb == true) { $cde="checked";} else { $cde="not checked"; } if ($fgh == true) { $fgh="checked";} else { $fgh="not checked"; }
Но операторы if всегда возвращают true, даже если флажок не установлен. Я пробовал варианты «===» и «! =», Но, похоже, это не работает.
ТИА
if (isset($_GET['checkbox_name'])) { ... }
Элементы управления формой (за исключением входных файлов и с некоторыми специальными правилами для входов изображений) всегда представляют строки . В строке запроса или в форме закодированного тела POST нет понятия логического элемента.
Идентификатор не имеет значения – важно только имя и значение (по крайней мере, до PHP).
Поскольку вы не дали им значения, они будут, IIRC, по умолчанию, поэтому, если вы делаете сравнение, вы должны это искать. Однако смотреть с isset
проще. Это, впрочем, не совсем верно, поскольку ваш пример дает им одинаковое имя и значение, поэтому вы не можете различать их.
Кроме того, из-за странности парсера данных формы PHP, вы должны закончить с помощью []
если хотите несколько элементов с тем же именем.
Вероятно, вы хотите сделать что-то вроде этого:
<label> <input name="Language[]" type="checkbox" id="aa" checked="checked" value="One" /> One</label> <label> <input name="Language[]" type="checkbox" id="bb" value="Two" />Two</label> <label> <input type="checkbox" name="Language[]" id="cc" value="Three" />Three</label>
Важно : обратите внимание на добавление значений и изменение имени.
Затем в PHP $_GET['Language']
будет массивом значений отмеченных флажков, которые вы можете перебрать.
Попробовать isset()
Я думаю, что ваш HTML-код должен быть похож
<label> <input name="Language[]" type="checkbox" id="aa" checked="checked" value ="1" />One </label> <label> <input name="Language[]" type="checkbox" id="bb" value ="2" />Two </label> <label> <input name="Language[]" type="checkbox" id="cc" value ="3" />Three </label>
а затем, используя что-то вроде
$count = count($_GET["Language"]);
вы можете подсчитать количество отмеченных флажков.
Или сделать
$arr = $_GET["Language"]; //$arr is an array that contains the values of the checked checkboxes
Затем вы можете foreach
массив
foreach( $arr as $item) { echo $item . "</br>"; /* Will print 1,2 and 3 (mind newlines)*/ }
В моем PHP я получил его из $_POST['checkbox_name']
, и я обнаружил, что переменная имела значение, когда флажок был проверен (т. Е. Он существовал, даже если флажок был ясен).