2010-02-15 11 views

risposta

66

Se la casella di controllo è selezionata, verrà passato il valore della casella di controllo. Altrimenti, il campo non viene passato nel post HTTP.

if (isset($_POST['mycheckbox'])) { 
    echo "checked!"; 
} 
+0

Funziona se è stata selezionata una 'casella di controllo ', quindi deselezionata e quindi il modulo è stato inviato? –

+1

Sì, il browser invia solo lo stato in cui era la casella di controllo, quando l'utente ha fatto clic sul pulsante di invio, quante volte la casella di controllo è stata selezionata o deselezionata non ha importanza. –

+0

Grazie. 'ASP.NET MVC' lo gestisce in modo diverso, quindi penso che sarebbe simile in' PHP', ma sembra che non lo sia. :) –

6

Prova questo

<form action="form.php" method="post"> 
    Do you like stackoverflow? 
    <input type="checkbox" name="like" value="Yes" /> 
<input type="submit" name="formSubmit" value="Submit" /> 
</form> 
<?php 
    if(isset($_POST['like']) 
    { 
     echo "You like Stackoverflow."; 
    } 
    else 
    { 
     echo "You don't like Stackoverflow."; 
    } 
?> 

O questo

<?php 
    if(isset($_POST['like']) && 
    $_POST['like'] == 'Yes') 
    { 
     echo "You like Stackoverflow."; 
    } 
    else 
    { 
     echo "You don't like Stackoverflow."; 
    } 
?> 
27

è possibile verificare che la casella di controllo del tempo sia isset() o empty() (il suo controllo esplicito isset) per è selezionata o meno

per esempio

<input type='checkbox' name='Mary' value='2' id='checkbox' /> 

qui è possibile controllare da

if (isset($_POST['Mary'])) { 
    echo "checked!"; 
} 

o

if (!empty($_POST['Mary'])) { 
    echo "checked!"; 
} 

quanto sopra verificherà una sola se si vuole fare per molti di quanto si può fare una matrice invece la scrittura separata per tutti casella di controllo prova come

<input type="checkbox" name="formDoor[]" value="A" />Acorn Building<br /> 
<input type="checkbox" name="formDoor[]" value="B" />Brown Hall<br /> 
<input type="checkbox" name="formDoor[]" value="C" />Carnegie Complex<br /> 

php

$aDoor = $_POST['formDoor']; 
    if(empty($aDoor)) 
    { 
    echo("You didn't select any buildings."); 
    } 
    else 
    { 
    $N = count($aDoor); 
    echo("You selected $N door(s): "); 
    for($i=0; $i < $N; $i++) 
    { 
     echo htmlspecialchars($aDoor[$i]). " "; 
    } 
    } 
+0

Come renderlo solo in grado di selezionare una casella di controllo da più checkbox e inserirla nel database? 'inserisci in table_name (choice) VALUES ('$ aDoor')' –

+0

@AlKush usa invece la radio box;) –

+0

Grazie. E sì, ho deciso di utilizzare i pulsanti di opzione. Ma come renderlo necessario. Per esempio. Ho tre pulsanti radio che non sono stati controllati. Ma voglio ricordare all'utente che devono sceglierne uno. –

2

Se non si sa quale caselle di controllo la vostra pagina ha (es: se si sta creando dinamicamente) si può semplicemente mettere un campo nascosto con lo stesso nome e il valore 0 proprio sopra la casella di controllo.

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

In questo modo otterrete 1 o 0 in base al fatto che la casella di controllo sia selezionata o meno.

0

amo mani corte così:

$isChecked = isset($_POST['myCheckbox']) ? "yes" : "no"; 
Problemi correlati