Jak odczytać, czy pole wyboru jest zaznaczone w PHP?

Jak odczytać, czy pole wyboru jest zaznaczone w PHP?

Author: Thew, 2010-12-29

15 answers

Jeśli Twoja strona HTML wygląda tak:

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

Po wysłaniu formularza możesz go sprawdzić za pomocą:

isset($_POST['test'])

Lub

if ($_POST['test'] == 'value1') ...
 274
Author: m_vitaly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-20 19:08:40

Zend Framework użyj ładnego hack na checkboxach, które możesz również zrobić Sam:

Każde wygenerowane pole jest powiązane z ukrytym polem o tej samej nazwie, umieszczonym tuż przed tym pole i z wartością "0". Następnie jeśli twoje pole wyboru jako wartość "1", zawsze otrzymasz wartość " 0 " LUB " 1 " w wynikowym GET lub POST

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1"> 
 87
Author: regilero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-04 12:43:05

Podczas używania pól wyboru jako tablicy:

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

Powinieneś użyć in_array():

if(in_array('Orange', $_POST['food'])){
  echo 'Orange was checked!';
}

Pamiętaj, aby sprawdzić, czy tablica jest ustawiona jako pierwsza, na przykład:

if(isset($_POST['food']) && in_array(...
 43
Author: rybo111,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-09 23:49:55

Niech Twój html dla Twojego checkboxa będzie jak

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

Następnie po przesłaniu formularza należy sprawdzić jak

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

    // Checkbox is selected
} else {

   // Alternate code
}

Zakładając, że {[3] } powinna być Twoja nazwa pola wyboru.A jeśli twoją metodą przesyłania formularza jest GET, musisz sprawdzić za pomocą zmiennych $_GET, takich jak

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

   // Checkbox is selected
} 
 37
Author: Gautam3164,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-03 10:28:50
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
 7
Author: Hammad Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-29 15:21:28

Można sprawdzić odpowiednią wartość jako ustawioną i niepustą w tablicy $_POST lub $_GET w zależności od akcji formularza.

Tj.: z formularzem POST używając name z "test" (tj.: <input type="checkbox" name="test">, użyjesz:

if(isset($_POST['test']) {
   // The checkbox was enabled...

}
 3
Author: John Parker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-29 14:08:19

Dowiedz się o isset, która jest wbudowaną "funkcją", która może być używana w poleceniach if, aby powiedzieć, czy zmienna została użyta lub ustawiona

Przykład:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }
 2
Author: user2451511,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-09 09:45:57

Cóż, powyższe przykłady działają tylko wtedy, gdy chcesz wstawić wartość, nie przydatne do aktualizacji różnych wartości do różnych kolumn, więc oto moja mała sztuczka, aby zaktualizować:


//EMPTY ALL VALUES TO 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 {
//UPDATE only the values checked
    $queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';
            $stmtMU = $db->prepare($queryMU);
            $stmtMU->execute();  
        } catch(PDOException $e) {
          $msg = 'Error: ' . $e->getMessage();}

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

....

Sekret polega na tym, że najpierw zaktualizuj wszystkie wartości (w tym przypadku na 0), a ponieważ wyśle tylko sprawdzone wartości, oznacza to, że wszystko, co otrzymasz, powinno być ustawione na 1, więc wszystko, co otrzymasz, powinno być ustawione na 1.

Przykład jest PHP, ale ma zastosowanie do wszystkiego.

Miłej zabawy:)

 2
Author: Hiram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-27 22:14:10

Aby sprawdzić, czy pole wyboru jest zaznaczone użyj empty()

Gdy formularz zostanie przesłany, pole wyboru zawsze zostanie ustawione , Ponieważ wszystkie zmienne POST zostaną wysłane wraz z formularzem.

Sprawdź, czy pole wyboru jest zaznaczone z pustym w następujący sposób:

//Check if checkbox is checked    
if(!empty($_POST['checkbox']){
#Checkbox selected code
} else {
#Checkbox not selected code
}
 1
Author: andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-27 18:25:47
$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

Ocena zwarcia zajmie się tym, abyś nie miał dostępu your_checkbox_name, gdy nie został złożony.

 1
Author: Martin Thoma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-23 18:44:20

Minimalistyczna Kontrola logiczna z utrzymaniem pozycji przełącznika

<?php

$checked = ($_POST['foo'] == ' checked');

?>

<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
 1
Author: Rembo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-21 01:04:03

Możesz to zrobić za pomocą krótkiego if:

$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;

Lub z nowym PHP7 Null coalescing operator

$check_value = $_POST['my_checkbox_name'] ?? 0;
 1
Author: Mazz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-14 09:30:54

Używam tej sztuczki od kilku lat i działa idealnie bez żadnego problemu dla zaznaczonego/niezaznaczonego statusu checkbox podczas korzystania z PHP i bazy danych.

Kod HTML: (do dodania strony)

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

Podpowiedź: Usuń "checkbox", jeśli chcesz go domyślnie pokazać jako niezaznaczony

Kod HTML: (do edycji strony)

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

Kod PHP: (użyj do dodawania/edycji stron)

$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}

Podpowiedź: zawsze będzie pusta wartość, chyba że użytkownik ją sprawdzi. Więc mamy już kod PHP do złap go, w przeciwnym razie zachowaj wartość na 0. Następnie po prostu użyj zmiennej $ status dla bazy danych.

 0
Author: ZEESHAN ARSHAD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-09 09:47:44
<?php

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

    $nama      = $_POST['name'];
    $subscribe = isset($_POST['subscribe']) ? $_POST['subscribe'] : "Not Checked";

    echo "Name: {$nama} <br />";
    echo "Subscribe: {$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" /> News <br />

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

</form>
 0
Author: antelove,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-11 13:53:11
<?php

if(isset($_POST['nameCheckbox'])){
    $_SESSION['fr_nameCheckbox'] = true;
}

?>

<input type="checkbox" name="nameCheckbox" 

<?php 

if(isset($_SESSION['fr_nameCheckbox'])){
    echo 'checked'; 
    unset($_SESSION['fr_nameCheckbox']);
} 

?>
 -3
Author: Grzegorz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 13:05:53