Wie lesen Sie, ob in PHP ein Kontrollkästchen aktiviert ist?
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') ...
Zend Framework verwendet ein Nice-Hack-Kontrollkästchen, das Sie auch selbst ausführen können:
Jedes generierte Kontrollkästchen ist mit einem ausgeblendeten Feld mit demselben Namen verbunden, das sich unmittelbar vor dem Kontrollkästchen befindet und den Wert "0" hat. Wenn Ihr Kontrollkästchen dann den Wert "1" hat, erhalten Sie im Ergebnis GET oder POST immer den Wert "0" oder "1"
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
Bei Verwendung von Kontrollkästchen als Array:
<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">
Sie sollten in_array()
verwenden:
if(in_array('Orange', $_POST['food'])){
echo 'Orange was checked!';
}
Vergewissern Sie sich, dass das Array zuerst eingestellt ist, z.
if(isset($_POST['food']) && in_array(...
Lassen Sie Ihre HTML für Ihre Checkbox gleich sein
<input type="checkbox" name="check1">
Nachdem Sie Ihr Formular abgeschickt haben, müssen Sie dies überprüfen
if (isset($_POST['check1'])) {
// Checkbox is selected
} else {
// Alternate code
}
Angenommen, check1
sollte Ihr Ankreuzfeldname sein. Und wenn Ihre Formularübergabemethode GET
ist, müssen Sie mit $_GET
-Variablen prüfen, wie
if (isset($_GET['check1'])) {
// Checkbox is selected
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
Ich benutze diesen Trick seit mehreren Jahren und er funktioniert problemlos mit dem Checkbox-Status bei aktiviertem/deaktiviertem Checkbox-Status während der Verwendung von PHP und Database.
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 deaktiviert anzeigen möchten
HTML-Code: (für Bearbeitungsseite)
<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
PHP Code: (für Seiten hinzufügen/bearbeiten)
$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 es geprüft. Wir haben also bereits PHP Code, um ihn abzufangen, ansonsten behalten Sie den Wert auf 0. Dann verwenden Sie einfach die $ status-Variable für die Datenbank.
Sie können den entsprechenden Wert im Array $ _POST oder $ _GET je nach Aktion Ihres Formulars als gesetzt und nicht leer markieren.
mit einem POST Formular unter Verwendung einer name
von "test" (d. h .: <input type="checkbox" name="test">
) würden Sie Folgendes verwenden:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Nun, die obigen Beispiele funktionieren nur, wenn Sie einen Wert einfügen wollen. Dies ist nicht hilfreich, wenn Sie unterschiedliche Werte in verschiedenen Spalten aktualisieren möchten. Hier ist also ein 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 einfach darin, alle VALUES zuerst zu aktualisieren (in diesem Fall auf 0), und da das nur die überprüften Werte sendet, bedeutet dies, dass alles, was Sie erhalten, auf 1 gesetzt werden sollte.
Beispiel ist PHP, gilt aber für alles.
Habe Spaß :)
Um zu überprüfen, ob ein Kontrollkästchen aktiviert ist, verwenden Sie empty ()
Wenn das Formular gesendet wird, wird die CheckboxIMMERgesetzt, da ALL POSTvariables mit dem Formular gesendet werden.
Prüfen Sie, ob das Kontrollkästchen leer ist, wie folgt:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
Erfahren Sie mehr über isset
, eine eingebaute "Funktion", die 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!";
}
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
Kurzschlussbewertung sorgt dafür, dass Sie nicht auf your_checkbox_name
zugreifen, wenn er nicht gesendet wurde.
Ein minimalistischer boolescher Check mit Festhalten der Schalterposition
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
Sie können es mit dem kurzen tun, wenn:
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
oder mit dem neuen PHP7 Null coalescing operator
$check_value = $_POST['my_checkbox_name'] ?? 0;
filter_input (INPUT_POST, 'checkbox_name', FILTER_DEFAULT, FILTER_FORCE_ARRAY)
<?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 kannst du 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 von isset($datosOrdenCompra[0]['exenta'])