#php #checkbox
#php #флажок
Вопрос:
Пожалуйста, обратите внимание, что я только начинаю изучать php. Я прошел через несколько разных многодневных руководств и сейчас пытаюсь самостоятельно написать небольшой скрипт списка рассылки. Я уверен, что это смехотворно простой вопрос / ответ, но ни один способ, которым я выяснил, как сформулировать вопрос, не выдал никаких результатов в Google.
у меня есть флажок с именем «htemail», когда я отправляю его в скрипт, у меня есть этот код:
if(!$_POST['htemail']){
$usehtml = 0;
}else{
$usehtml = 1;
}
echo($usehtml);
если флажок установлен, он возвращает 1, но если это не так, я получаю следующую ошибку:
Обратите внимание: Неопределенный индекс: htemail в C:wampwwwmailing listcreateUser.php в строке 7 Вызовите Stack #TimeMemoryFunctionLocation 10.0004673576{main}( )..CreateUser.php:0 0.
Первое, что я подумал сделать, это перевернуть код назад, чтобы он сначала проверил наличие проверки (я не уверен, почему я думал, что это поможет)
Заранее спасибо за любые ответы.
Ответ №1:
Браузер может не включить данные post, если они не отмечены. Используйте функцию isset
, чтобы проверить это. Если значение не установлено, значит, оно не проверено, наоборот, неверно, если установлено, все равно может быть false.
if(isset($_POST['htemail']) amp;amp; $_POST['htemail'] == "Value"){ //where "Value" is the
//same string given in the HTML form, as value attribute the the checkbox input
$usehtml = 1;
}else{
$usehtml = 0;
}
В качестве альтернативы isset
вы можете использовать array_key_exists
Ответ №2:
Что вы хотите, так это определить существование элемента массива, а затем проверить его содержимое:
$usehtml = 0;
if (isset($_POST['htemail']) amp;amp; strtolower($_POST['htemail']) == 'yes'){
$usehtml = 1;
}
echo($usehtml);
isset()
проверяет, существует ли элемент массива, и в этом случае вы можете затем проверить, соответствует ли значение вашему требуемому значению.
Кроме того, выше я приказал вычислению по умолчанию принимать значение (0), затем изменить на другое значение, если присутствует другая переменная. На самом деле нет большой разницы между выполнением этого и инструкцией if / else, но я думаю, что это удобнее для чтения и понимания.