Как посмотреть, какой флажок установлен? - PullRequest
45 голосов
/ 16 февраля 2010

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

Ответы [ 5 ]

67 голосов
/ 16 февраля 2010

Если флажок установлен, то значение флажка будет передано. В противном случае поле не передается в сообщении HTTP.

if (isset($_POST['mycheckbox'])) {
    echo "checked!";
}
29 голосов
/ 04 декабря 2012

вы можете проверить, установлен ли isset() или empty() (его проверка явно установлена) или нет

например

  <input type='checkbox' name='Mary' value='2' id='checkbox' />

здесь вы можете проверить по

if (isset($_POST['Mary'])) {
    echo "checked!";
}

или

if (!empty($_POST['Mary'])) {
    echo "checked!";
}

Выше будет проверяться только один, если вы хотите сделать для многих, чем вы можете сделать массив вместо того, чтобы писать отдельно для всех флажок попробуйте как

<input type="checkbox" name="formDoor[]" value="A" />Acorn Building<br />
<input type="checkbox" name="formDoor[]" value="B" />Brown Hall<br />
<input type="checkbox" name="formDoor[]" value="C" />Carnegie Complex<br />

PHP

  $aDoor = $_POST['formDoor'];
  if(empty($aDoor))
  {
    echo("You didn't select any buildings.");
  }
  else
  {
    $N = count($aDoor);
    echo("You selected $N door(s): ");
    for($i=0; $i < $N; $i++)
    {
      echo htmlspecialchars($aDoor[$i] ). " ";
    }
  }
7 голосов
/ 16 февраля 2010

Попробуйте это

index.html

<form action="form.php" method="post">
    Do you like stackoverflow?
    <input type="checkbox" name="like" value="Yes" />  
    <input type="submit" name="formSubmit" value="Submit" /> 
</form>

form.php

<html>
<head>
</head>
<body>

<?php
    if(isset($_POST['like']))
    {
        echo "<h1>You like Stackoverflow.<h1>";
    }
    else
    {
        echo "<h1>You don't like Stackoverflow.</h1>";
    }   
?>

</body>
</html>

Или это

<?php
    if(isset($_POST['like'])) && 
    $_POST['like'] == 'Yes') 
    {
        echo "You like Stackoverflow.";
    }
    else
    {
        echo "You don't like Stackoverflow.";
    }   
?>
5 голосов
/ 24 июля 2015

Если вы не знаете, какие флажки есть на вашей странице (например, если вы создаете их динамически), вы можете просто поставить скрытое поле с тем же именем и значением 0 прямо над флажком.

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

Таким образом, вы получите 1 или 0 в зависимости от того, установлен флажок или нет.

1 голос
/ 18 июля 2017

люблю короткие руки так:

$isChecked = isset($_POST['myCheckbox']) ? "yes" : "no";
...