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

Как зашифровать/расшифровать данные на php

Web

Преобразование объекта PHP в ассоциативный массив

Web

Как усечь строку в PHP до слова, ближайшего к определенному количеству символов

Web

Что лучше использовать при освобождении памяти в PHP: unset() или $var=null