Odpowiedzi:
Jeśli Twoja strona HTML wygląda tak:
<input type="checkbox" name="test" value="value1">
Po przesłaniu formularza możesz go sprawdzić za pomocą:
isset($_POST['test'])
lub
if ($_POST['test'] == 'value1') ...
on
, gdy są zaznaczone. Dlatego dla kompatybilności łatwiej jest po prostu użyć isset($_POST['checkboxName'])
.
value1
zaznaczenie pola wyboru. Jeśli nie jest zaznaczone, $_POST['test']
po prostu by nie istniał.
Zend Framework używa fajnego hacka na polach wyboru, które możesz również zrobić sam:
Każde wygenerowane pole wyboru jest powiązane z ukrytym polem o tej samej nazwie, umieszczonym tuż przed polem wyboru i wartością „0”. Następnie, jeśli 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">
input[type="checkbox"]
)?
Gdy używasz 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(...
foreach ($_POST['food'] as $selected_food)
praca nad zaznaczonym jest fajna, dzięki
Niech Twój HTML dla twojego pola wyboru będzie podobny
<input type="checkbox" name="check1">
Następnie po przesłaniu formularza musisz sprawdzić jak
if (isset($_POST['check1'])) {
// Checkbox is selected
} else {
// Alternate code
}
Zakładając, że check1
powinna to być Twoja nazwa pola wyboru. A jeśli twoją metodą przesyłania formularzy jest GET
, musisz sprawdzić $_GET
zmienne takie jak
if (isset($_GET['check1'])) {
// Checkbox is selected
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
Używam tej sztuczki od kilku lat i działa ona idealnie bez problemu dla zaznaczonego / niezaznaczonego statusu pola wyboru podczas korzystania z PHP i bazy danych.
Kod HTML: (dla Dodaj stronę)
<input name="status" type="checkbox" value="1" checked>
Wskazówka: usuń „pole wyboru”, jeśli chcesz domyślnie wyświetlać je jako niezaznaczone
Kod HTML: (dla strony edycji)
<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
Kod PHP: (użyj dla stron Dodaj / Edytuj)
$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}
Wskazówka: Zawsze będzie pusta wartość, chyba że użytkownik ją zaznaczy. Tak więc mamy już kod PHP, aby go złapać, inaczej utrzymaj wartość na 0. Następnie po prostu użyj zmiennej $ status dla bazy danych.
Aby sprawdzić, czy pole wyboru jest zaznaczone, użyj pustego ()
Po przesłaniu formularza pole wyboru ZAWSZE zostanie ustawione, ponieważ WSZYSTKIE zmienne POST zostaną wysłane wraz z formularzem.
Sprawdź, czy pole wyboru jest zaznaczone pustym, jak następuje:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
Możesz sprawdzić odpowiednią wartość jako ustawioną i niepustą w tablicy $ _POST lub $ _GET, w zależności od akcji formularza.
tj .: w formularzu POST przy użyciu name
„testu” (tj .: <input type="checkbox" name="test">
użyłbyś:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Dowiedz się, isset
która jest wbudowaną „funkcją”, której można użyć w instrukcjach if, aby stwierdzić, czy zmienna została użyta lub ustawiona
Przykład:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
Cóż, powyższe przykłady działają tylko wtedy, gdy chcesz WSTAWIĆ wartość, co nie jest przydatne do AKTUALIZOWANIA 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 mieć wartość 1.
Przykładem jest PHP, ale dotyczy wszystkiego.
Baw się dobrze :)
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
Ocena zwarć zadba o to, abyś nie miał dostępu, your_checkbox_name
gdy nie został przesłany.
Minimalistyczna kontrola logiczna z zachowaniem pozycji przełącznika
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
<?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>
w BS3 możesz umieścić
<?php
$checked="hola";
$exenta = $datosOrdenCompra[0]['exenta'];
var_dump($datosOrdenCompra[0]['exenta']);
if(isset($datosOrdenCompra[0]['exenta']) and $datosOrdenCompra[0]['exenta'] == 1){
$checked="on";
}else{
$checked="off";
}
?>
<input type="checkbox" id="exenta" name="exenta" <?php echo $checked;?> > <span class="label-text"> Exenta</span>
Proszę zwrócić uwagę na użycieisset($datosOrdenCompra[0]['exenta'])
Wordpress ma checked()
funkcję. Odniesienie: https://developer.wordpress.org/reference/functions/checked/
checked( mixed $checked, mixed $current = true, bool $echo = true )
Opis Porównuje dwa pierwsze argumenty i jeśli identyczne znaki są zaznaczone
Parametry $ sprawdzone (mieszane) (wymagane) Jedna z wartości do porównania
$ current (mixed) (Optional) (true) Druga wartość do porównania, jeśli nie tylko true Wartość domyślna: true
$ echo (bool) (Opcjonalnie) Czy echo, czy po prostu zwraca ciąg Wartość domyślna: true
Zwraca atrybut html #Return (string) lub pusty ciąg
<?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']);
}
?>