it-swarm.it

Come leggere se una casella di controllo è selezionata in PHP?

Come leggere se una casella di controllo è selezionata in PHP?

231
Thew

Se la tua pagina HTML ha questo aspetto: 

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

Dopo aver inviato il modulo puoi verificarlo con: 

isset($_POST['test'])

if ($_POST['test'] == 'value1') ...
294
m_vitaly

Zend Framework usa un bel hack sulle caselle di controllo, che puoi anche fare da solo: 

Ogni checkbox generata è associata ad un campo nascosto con lo stesso nome, posizionato poco prima della casella di controllo, e con un valore di "0". Quindi se la tua casella di controllo come valore "1", otterrai sempre il valore "0" o "1" nel risultato GET o POST risultante

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1"> 
91
regilero

Quando si usano le checkbox come 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 che l'array sia impostato per primo, come ad esempio:

if(isset($_POST['food']) && in_array(...
48
rybo111

Lascia che sia il tuo html per la tua casella di controllo

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

Quindi, dopo aver inviato il modulo, è necessario controllare come

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

    // Checkbox is selected
} else {

   // Alternate code
}

Supponendo che check1 dovrebbe essere il tuo nome di casella di controllo. E se il tuo metodo di invio del modulo è GET allora devi verificare con $_GET variabili come

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

   // Checkbox is selected
} 
37
Gautam3164
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
7
Hammad Khan

Sto usando questo trucco da diversi anni e funziona perfettamente senza alcun problema per lo stato della casella di controllo selezionata/deselezionata mentre uso 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: (usare per aggiungere/modificare pagine)

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

Suggerimento: ci sarà sempre un valore vuoto a meno che l'utente non lo abbia verificato. Quindi, abbiamo già il codice PHP per catturarlo, mantenere il valore su 0. Quindi, usa semplicemente la variabile $ status per il database.

4
ZEESHAN ARSHAD

È possibile verificare il valore corrispondente come impostato e non vuoto nell'array $ _POST o $ _GET in base all'azione del modulo.

vale a dire con un modulo POST che utilizza un name di "test" (cioè: <input type="checkbox" name="test">, dovresti usare:

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

}
3
John Parker

Bene, gli esempi sopra funzionano solo quando si desidera INSERIRE un valore, non utile per AGGIORNARE valori diversi a colonne diverse, quindi ecco il mio piccolo trucco da 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 è semplicemente aggiornare tutti i VALORI per primi (in questo caso a 0), e poiché invierà solo i valori controllati, ciò significa che tutto ciò che si ottiene dovrebbe essere impostato su 1, quindi tutto ciò che si imposta su 1.

L'esempio è PHP ma si applica a tutto.

Divertiti :)

2
Hiram

Per verificare se una casella è selezionata usa empty ()

Quando il modulo viene inviato, la casella di spunta saràSEMPREessere impostata, poiché TUTTI POSTvariabili saranno inviati 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
}
2
andy

Scopri isset che è una "funzione" incorporata che può essere utilizzata nelle istruzioni if ​​per sapere se una variabile è stata utilizzata o impostata

Esempio:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }
2
user2451511
$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

Valutazione del cortocircuito si prenderà cura di non accedere a your_checkbox_name quando non è stato inviato.

1
Martin Thoma

Un controllo booleano minimalista con mantenimento della posizione dell'interruttore

<?php

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

?>

<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
1
Rembo

Puoi farlo con il corto se:

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

o con il nuovo PHP Null coalescing operator

$check_value = $_POST['my_checkbox_name'] ?? 0;
1
Mazz
<?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
antelove

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>

Nota l'uso di isset($datosOrdenCompra[0]['exenta'])

0