Come leggere se una casella di controllo è selezionata in PHP?
Come leggere se una casella di controllo è selezionata in PHP?
Risposte:
Se la tua pagina HTML è simile a questa:
<input type="checkbox" name="test" value="value1">
Dopo aver inviato il modulo è possibile verificarlo con:
isset($_POST['test'])
o
if ($_POST['test'] == 'value1') ...
on
, quando sono selezionate. Pertanto per compatibilità è più semplice da usare isset($_POST['checkboxName'])
.
value1
se la casella fosse selezionata. Se non è selezionato, $_POST['test']
semplicemente non esisterebbe.
Zend Framework usa un bel trucco sulle caselle di controllo, che puoi anche fare da solo:
Ogni casella di controllo generata è associata a un campo nascosto con lo stesso nome, posizionato appena prima della casella di controllo e con un valore "0". Quindi se la tua casella di controllo come valore "1", otterrai sempre il valore "0" o "1" nel GET o POST risultante
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
input[type="checkbox"]
quello)?
Quando si utilizzano le caselle di controllo come un array:
<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">
Dovresti usare in_array()
:
if(in_array('Orange', $_POST['food'])){
echo 'Orange was checked!';
}
Ricordarsi di verificare prima che l'array sia impostato, ad esempio:
if(isset($_POST['food']) && in_array(...
foreach ($_POST['food'] as $selected_food)
per lavorare su quello selezionato è bello, grazie
Lascia che il tuo html per la tua casella di controllo sia simile
<input type="checkbox" name="check1">
Quindi dopo aver inviato il modulo è necessario verificare come
if (isset($_POST['check1'])) {
// Checkbox is selected
} else {
// Alternate code
}
Supponendo che check1
dovrebbe essere il nome della casella di controllo e se il metodo di invio del modulo è GET
quindi è necessario verificare con $_GET
variabili come
if (isset($_GET['check1'])) {
// Checkbox is selected
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
Sto usando questo trucco da diversi anni e funziona perfettamente senza alcun problema per lo stato della casella di controllo selezionata / non selezionata durante l'utilizzo con PHP e Database.
Codice HTML: (per Aggiungi pagina)
<input name="status" type="checkbox" value="1" checked>
Suggerimento: rimuovere "checkbox" se si desidera mostrarlo come non selezionato per impostazione predefinita
Codice HTML: (per Modifica pagina)
<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
Codice PHP: (utilizzare per Aggiungi / Modifica pagine)
$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}
Suggerimento: sarà sempre presente un valore vuoto a meno che l'utente non lo abbia verificato. Quindi, abbiamo già il codice PHP per catturarlo altrimenti mantieni il valore su 0. Quindi, usa semplicemente la variabile $ status per il database.
Per verificare se una casella è selezionata, usa empty ()
Quando il modulo viene inviato, la casella di controllo verrà SEMPRE impostata, poiché TUTTE le variabili POST verranno inviate con il modulo.
Controlla se la casella è selezionata con vuoto come segue:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
È possibile controllare il valore corrispondente come impostato e non vuoto nell'array $ _POST o $ _GET a seconda dell'azione del modulo.
vale a dire: con un modulo POST che utilizza un name
"test" (ovvero <input type="checkbox" name="test">
:, useresti:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Scopri isset
quale è una "funzione" incorporata che può essere utilizzata in istruzioni if per dire se una variabile è stata utilizzata o impostata
Esempio:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
Bene, gli esempi sopra funzionano solo quando vuoi INSERIRE un valore, non utile per AGGIORNARE valori diversi su colonne diverse, quindi ecco il mio piccolo trucco per aggiornare:
//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[]" />
....
Il segreto è aggiornare prima tutti i VALORI (in questo caso a 0), e poiché invierà solo i valori controllati, ciò significa che tutto ciò che ottieni dovrebbe essere impostato su 1, quindi tutto ciò che viene impostato su 1.
L'esempio è PHP ma vale per tutto.
Divertiti :)
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
La valutazione del corto circuito si occuperà in modo tale da non poter accedere your_checkbox_name
quando non è stata inviata.
Un controllo booleano minimalista con mantenimento della posizione dell'interruttore
<?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 puoi mettere
<?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>
Si prega di notare l'uso diisset($datosOrdenCompra[0]['exenta'])
Wordpress ha la checked()
funzione. Riferimento: https://developer.wordpress.org/reference/functions/checked/
checked( mixed $checked, mixed $current = true, bool $echo = true )
Descrizione Confronta i primi due argomenti e, se identici, i segni di spunta
Parametri $ controllato (misto) (Obbligatorio) Uno dei valori da confrontare
$ current (misto) (Facoltativo) (true) L'altro valore da confrontare se non solo true Valore predefinito: true
$ echo (bool) (Facoltativo) Indica se eseguire l'eco o semplicemente restituire la stringa Valore predefinito: true
Restituisce # Restituisce (stringa) l'attributo html o la stringa vuota
<?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']);
}
?>