Web

Как узнать, установлен ли флажок в PHP

Как прочитать, установлено ли значение в чекбоксе на PHP?

 

Ответ 1

Если ваша HTML-страница выглядит так:

<input type="checkbox" name="test" value="value1">,

после отправки формы вы можете проверить ее так:

isset($_POST['test'])

или

if ($_POST['test'] == 'value1') ...

 

 

Ответ 2

Zend Framework использует хороший хак для чекбоксов, который вы также можете сделать сами. Каждый сгенерированный флажок ассоциируется с одноименным скрытым полем, расположенным непосредственно перед флажком и имеющим значение «0». Тогда, если ваш флажок имеет значение «1», вы всегда получите значение «0» или «1» в результирующем GET или POST. 

<input type="hidden" name="foo" value="0" />

<input type="checkbox" name="foo" value="1"> 

 

 

Ответ 3

При использовании флажков в виде массива:

<input type="checkbox" name="food[]" value="Orange">

<input type="checkbox" name="food[]" value="Apple">,

вам следует использовать in_array():

if(in_array('Orange', $_POST['food'])){

  echo 'Orange был выбран!';

}

Не забудьте сначала проверить, что массив установлен, например:

if(isset($_POST['food']) && in_array(...

 

 

Ответ 4

Пусть ваш html для вашего чекбокса будет похож на:

<input type="checkbox" name="check1">

Затем, после отправки формы, вам нужно проверить его:

if (isset($_POST['check1'])) {

    // флажок установлен

} else {

   // альтернативный вариант

}

Предположим, что check1 должно быть именем вашего флажка. А если метод отправки вашей формы - GET, то вам нужно проверить переменные $_GET, например так:

if (isset($_GET['check1'])) {

    // флажок установлен

 

 

Ответ 5

Я использую этот трюк уже несколько лет, и он отлично работает без каких-либо проблем для отмеченного состояния флажка при использовании с PHP и базой данных.

HTML код: (для страницы добавления):

<input name="status" type="checkbox" value="1" 

<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>

Код PHP (используется для добавления/редактирования страниц):

$status = $_POST['status'];

if ($status == 1) {

     $status = 1;

} else {

     $status = 0;

}

Подсказка: значение всегда будет пустым, если только пользователь не проверил его. Итак, у нас уже есть PHP-код, чтобы перехватить его и сохранить значение равным 0. Затем просто используйте переменную $status для работы с базой данных.

 

Ответ 6

Но приведенные выше примеры работают только тогда, когда вы хотите использовать INSERT значение, и не полезны для UPDATE различных значений в разных столбцах, поэтому вот мой маленький трюк:

// Установка всех значений в 0 

$queryMU ='UPDATE '.$db->dbprefix().'settings SET menu_news = 0, menu_gallery = 0, menu_events = 0, menu_contact = 0';

            $stmtMU = $db->prepare($queryMU);

            $stmtMU->execute();

if(!empty($_POST['check_menus'])) {

    foreach($_POST['check_menus'] as $checkU) {

try {

// обновление только выбранных значений

    $queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';

            $stmtMU = $db->prepare($queryMU);

            $stmtMU->execute();  

        } catch(PDOException $e) {

          $msg = 'Error: ' . $e->getMessage();}

         }

 

}

HTML:

<input type="checkbox" value="menu_news" name="check_menus[]" />

<input type="checkbox" value="menu_gallery" name="check_menus[]" />

 

Секрет в том, чтобы сначала обновить все VALUES (в данном случае в 0), а поскольку отправляются только проверенные значения, это означает, что все, что вы получите, должно быть установлено в 1, поэтому все, что вам необходимо, устанавливается во флажках в значение 1.

Пример для PHP, но он применим для всех языков.

 

Ответ 7

Можно использовать следующий код:

<?php

  if (isset($_POST['add'])) {

    $nama      = $_POST['name'];

    $subscribe = isset($_POST['subscribe']) ? $_POST['subscribe'] : "Не выбрано";

    echo "Имя: {$nama} <br />";

    echo "Описание: {$subscribe}";

    echo "<hr />";   

  }

?>

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" >

  <input type="text" name="name" /> <br />

  <input type="checkbox" name="subscribe" value="news" />Новости<br />

  <input type="submit" name="add" value="Save" />

</form>

 

Схожие статьи

Лучшие бесплатные платформы для создания сайтов без особых навыков
Web

Лучшие бесплатные платформы для создания сайтов без особых навыков

Какой хостинг выбрать для сайта
Web

Какой хостинг выбрать для сайта

Web

Как выполнить цикл по массиву в php с форматированным html оформлением?

Web

Отладка проблем с функцией exec

×