Wie kann man lesen, ob ein Kontrollkästchen in PHP aktiviert ist?
Wie kann man lesen, ob ein Kontrollkästchen in PHP aktiviert ist?
Antworten:
Wenn Ihre HTML-Seite so aussieht:
<input type="checkbox" name="test" value="value1">
Nach dem Absenden des Formulars können Sie es überprüfen mit:
isset($_POST['test'])
oder
if ($_POST['test'] == 'value1') ...
on
, wenn sie aktiviert sind. Aus Kompatibilitätsgründen ist es daher einfacher, nur zu verwenden isset($_POST['checkboxName'])
.
value1
wenn das Kontrollkästchen aktiviert ist. Wenn es nicht markiert ist, $_POST['test']
würde es einfach nicht existieren.
Zend Framework verwendet einen netten Hack für Kontrollkästchen, den Sie auch selbst ausführen können:
Jedes generierte Kontrollkästchen ist einem ausgeblendeten Feld mit demselben Namen zugeordnet, das direkt vor dem Kontrollkästchen platziert ist und den Wert "0" hat. Wenn Ihr Kontrollkästchen dann den Wert "1" hat, erhalten Sie im resultierenden GET oder POST immer den Wert '0' oder '1'
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
input[type="checkbox"]
eine)?
Bei Verwendung von Kontrollkästchen als Array:
<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">
Sie sollten verwenden in_array()
:
if(in_array('Orange', $_POST['food'])){
echo 'Orange was checked!';
}
Denken Sie daran, zuerst zu überprüfen, ob das Array eingestellt ist, z.
if(isset($_POST['food']) && in_array(...
foreach ($_POST['food'] as $selected_food)
das
Lassen Sie Ihr HTML für Ihr Kontrollkästchen wie sein
<input type="checkbox" name="check1">
Dann, nachdem Sie Ihr Formular gesendet haben, müssen Sie überprüfen, wie
if (isset($_POST['check1'])) {
// Checkbox is selected
} else {
// Alternate code
}
Angenommen, dies check1
sollte der Name Ihres Kontrollkästchens sein. Und wenn Ihre Methode zum Senden von Formularen lautet GET
, müssen Sie dies mit $_GET
Variablen wie überprüfen
if (isset($_GET['check1'])) {
// Checkbox is selected
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
Ich verwende diesen Trick seit mehreren Jahren und er funktioniert problemlos, wenn der Status des Kontrollkästchens bei Verwendung mit PHP und Datenbank aktiviert / deaktiviert ist.
HTML-Code: (für Seite hinzufügen)
<input name="status" type="checkbox" value="1" checked>
Hinweis: Entfernen Sie das Kontrollkästchen, wenn Sie es standardmäßig als deaktiviert anzeigen möchten
HTML-Code: (zum Bearbeiten der Seite)
<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
PHP-Code: (zum Hinzufügen / Bearbeiten von Seiten)
$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}
Hinweis: Es wird immer ein leerer Wert angezeigt, es sei denn, der Benutzer hat ihn überprüft. Wir haben also bereits PHP-Code, um ihn abzufangen. Andernfalls behalten Sie den Wert auf 0. Verwenden Sie dann einfach die Variable $ status für die Datenbank.
Um zu überprüfen, ob ein Kontrollkästchen aktiviert ist, verwenden Sie empty ()
Wenn das Formular gesendet wird, wird das Kontrollkästchen IMMER aktiviert , da ALL POST gesendet Variablen mit dem Formular gesendet werden.
Überprüfen Sie, ob das Kontrollkästchen wie folgt mit leer aktiviert ist:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
Sie können den entsprechenden Wert abhängig von der Aktion Ihres Formulars im Array $ _POST oder $ _GET als festgelegt und nicht leer überprüfen.
dh: Mit einem POST-Formular unter Verwendung eines name
"Tests" (dh: würden <input type="checkbox" name="test">
Sie verwenden:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Erfahren Sie, isset
welche "Funktion" in if-Anweisungen verwendet werden kann, um festzustellen, ob eine Variable verwendet oder festgelegt wurde
Beispiel:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
Nun, die obigen Beispiele funktionieren nur, wenn Sie einen Wert EINFÜGEN möchten, der nicht nützlich ist, um verschiedene Werte in verschiedene Spalten zu aktualisieren. Hier ist mein kleiner Trick zum Aktualisieren:
//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[]" />
....
Das Geheimnis besteht darin, zuerst alle WERTE zu aktualisieren (in diesem Fall auf 0). Da nur die überprüften Werte gesendet werden, bedeutet dies, dass alles, was Sie erhalten, auf 1 gesetzt werden sollte, also alles, was Sie erhalten, auf 1 gesetzt wird.
Beispiel ist PHP, gilt aber für alles.
Habe Spaß :)
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
Die Kurzschlussbewertung sorgt dafür, dass Sie nicht darauf zugreifen können, your_checkbox_name
wenn sie nicht übermittelt wurde.
Eine minimalistische boolesche Prüfung mit Beibehaltung der Schalterposition
<?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>
in BS3 können Sie setzen
<?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>
Bitte beachten Sie die Verwendung vonisset($datosOrdenCompra[0]['exenta'])
WordPress hat die checked()
Funktion. Referenz: https://developer.wordpress.org/reference/functions/checked/
checked( mixed $checked, mixed $current = true, bool $echo = true )
Beschreibung Vergleicht die ersten beiden Argumente und wenn sie identisch sind, wie markiert
Parameter $ geprüft (gemischt) (Erforderlich) Einer der zu vergleichenden Werte
$ current (gemischt) (Optional) (true) Der andere zu vergleichende Wert, wenn nicht nur true. Standardwert: true
$ echo (bool) (Optional) Gibt an, ob die Zeichenfolge wiedergegeben oder nur zurückgegeben werden soll. Standardwert: true
Rückgabe des HTML-Attributs #Return (Zeichenfolge) oder einer leeren Zeichenfolge
<?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']);
}
?>