valori Casella di controllo sono sottoposti da un modulo solo se si seleziona la casella di controllo. Inoltre, è l'attributo name che conta, non l'ID.
Ci sono diversi modi di trattare caselle in PHP:
- dare tutto caselle lo stesso nome seguito da una coppia di parentesi quadre, così l'intero set è trattato come un array. In questo caso, assegna ad ogni casella un valore.
- Assegnare a ogni casella di controllo un nome e un valore diversi.
- Assegna a ogni casella di controllo un nome diverso, ma nessun valore.
In ciascun caso, è necessario verificare l'esistenza del nome casella di controllo nell'array $ _POST.
Ad esempio:
<input type="checkbox" name="color[]" id="orange" value="orange">
<input type="checkbox" name="color[]" id="apple" value="apple">
Per ottenere i valori per queste caselle di controllo:
if (isset($_POST['color'])) {
$colors = $_POST['color'];
// $colors is an array of selected values
}
Tuttavia, se ogni casella ha un nome diverso e un valore esplicito in questo modo:
<input type="checkbox" name="orange" id="orange" value="orange">
<input type="checkbox" name="apple" id="apple" value="apple">
È ancora necessario utilizzare isset():
if (isset($_POST['orange'])) {
// orange has been set and its value is "orange"
}
Se non si imposta un valore, il valore predefinito è "on", ma non sarà nell'array $ _POST a meno che non sia stato selezionato, quindi è ancora necessario utilizzare isset().
fonte
2011-01-08 00:38:09
Se li chiami semplicemente lo stesso, questo non funzionerà. È necessario impostarli come array: 'name =" selection [index] "' –
risolto l'esempio. Inoltre penso che puoi lasciare fuori l'indice e saranno automaticamente indicizzati. –
Sì, anche tu potresti farlo, ma ha chiesto espressamente di conservare l'attributo "nome". L'indice potrebbe sostituirlo. –