Newsgroup: it.comp.www.php
Titolo: Risultati da checkbox

Nuovo del gruppo...(primo post)
Ho un modulo che prevede, tra alte caselle, 5 checkbox ove l'utente può 
spuntare (una o più). Ho il problema che nel leggere i risultati le 
caselle non spuntate mi danno un errore del tipo "Notice" ovvero la 
variabile non è definita...
-- 
<<per contatti togliere gli asterischi>>

 variabile non è definita...
Posta il codice ;-)
Enrico

 la variabile non è definita...
Prima di usare un qualunque parametro (inviato via get o post) è
opportuno verificare che esista attraverso la funzione isset().
In particolare, un checkbox ha il seguente comportamento: se
selezionato, nella pagina di destinazione esiste il parametro
$_POST['name_del_checkbox'] (o $_GET, naturalmente) e assume il valore
impostato nell'attributo value del relativo tag input. Se non viene
selezionato, nella pagina di destinazione non esiste alcun parametro
$_POST['name_del_checkbox'].
Vedi 
http://www.php.net/isset
.
Ciao.
-- 
Federico

Enrico204 ha scritto:

<form action="dati.php" method="post" name="richieste"  onSubmit....ecc.
...<input name="sala" type="checkbox" value="sala">
...<input name="bar" type="checkbox" value="bar">
...<input name="ricevimento" type="checkbox" value="ricevimento">
...<input name="agenzia" type="checkbox" value="agenzia">
...ecc.
La pagina dati.php:
$cucina=$_POST['cucina'];
$sala=$_POST['sala'];
$bar=$_POST['bar'];
$ricevimento=$_POST['ricevimento'];
$agenzia=$_POST['agenzia'];
$reparto="$cucina . $sala . $bar . $ricevimento . $agenzia";
echo"<b>Reparto</b>: $reparto<br>";
Devo aggiungere che sto lavorando in ambiente Easy PHP e non ho ancora 
pubblicato sul server


Federico ha scritto:

Ho già provato!


 $bar=$_POST['bar'];
$cucina = isset( $_POST['cucina'] );
$bar = isset( $_POST['bar'] );
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 Ho già provato!
Con quali risultati? Che codice hai usato?
-- 
Federico

 $sala=$_POST['sala'];
Se il checkbox 'sala' non è stato selezionato la riga precedente solleva
un notice perché $_POST['sala'] non esiste. Prima di usare
$_POST['sala'] (e tutti gli altri) devi controllarne l'esistenza.
if (isset($_POST['sala']) && $_POST['sala'] == 'sala') {
    $sala = true; // Selezionato
} else {
    $sala = false // Non selezionato
}
Ciao.
-- 
Federico

Umberto Salsi ha scritto:

non funziona. Non mi segnala più errore "Notice" ma mi visualizza, al 
posto del nome selezionato, "1"


Federico ha scritto:

Purtroppo non va:
"Parse error: parse error in c:\programmi\easyphp1-8\www\dati.php on 
line 19"


 line 19"
Se non fai vedere la riga 19 è difficile capire perché. Comunque, se hai
fatto un copia e incolla del codice sopra riportato probabilmente
l'errore è dato dalla mancanza del punto e virgola alla fine della riga
 $sala = false
Tieni presente che le righe che ti ho scritto fanno qualcosa di diverso
da quello che ti aspetti. Esse impostano a true la variabile $sala se
l'utente ha messo il segno di spunta sul checkbox sala, altrimenti la
impostano a false. Questo perché - in generale - non serve tanto
conoscere il valore del parametro inviato con un checkbox (valore che
conosci a priori e che viene verificato nel test del blocco if), quanto
sapere se il checkbox è stato selezionato oppure no (ed è ciò che
succede con il codice che ti ha proposto Umberto Salsi, per quello il
valore di $sala vale 1). Comunque, se proprio vuoi che $sala prenda il
valore del parametro inviato, modifica le righe così:
if (isset($_POST['sala']) && $_POST['sala'] == 'sala') {
    $sala = $_POST['sala']; // Selezionato
} else {
    $sala = 'checkbox `sala` non selezionato'; // Non selezionato
}
Ciao.
-- 
Federico

Federico ha scritto:

Così finalmente funziona!
Grazie
Ciao
