checkbox e PHP

  • Creatore Discussione Creatore Discussione tonyo94
  • Data di inizio Data di inizio

tonyo94

Nuovo Utente
15 Mar 2009
5
0
0
vorrei mi deste un consiglio in quanto non so come fare.
Ho nella pagina form delle checkbox per l'invio di scelte multiple al database però qualunque scelte faccia al database ne arriva solo una.
Ho provato a impostare il campo della tabella a Set senza alcun risultato.
Come potrei fare?
 
Postaci un po' di codice.
Comunque secondo me il probelma è il fatto che hai messo lo stesso nome a tutte le checkbox!
 
vi ringrazio per l'intervento:
Il codice impostato come segue con tre diversi name e con altrettanti campi nella tabella del database restituisce un errore e non invia nulla:
<form name="questionario" action="elabora_questionario.php" method="post">
Il suo nome:<input type="text" name="nome" size="30" maxlength="40"><br><br>

1)Quando preferisci leggere?
<br />
<input type="checkbox" name="il_pomeriggio" value="il pomeriggio"/> Il pomeriggio
<br />
<input type="checkbox" name="la_sera" value="la sera"/> La sera
<br />
<input type="checkbox" name="nei_week-end" value="nei week-end"/>Nei week-end
<br />
<input type="submit" value="Invia">
<input type ="reset" value="annulla ">
</form>
Impostato con i name tutti uguali invece invia ad un solo campo(leggere) anche se impostato a Set un solo dato anche se ne seleziono di più:
Il suo nome:<input type="text" name="nome" size="30" maxlength="40"><br><br>

1)Quando preferisci leggere?
<br />
<input type="checkbox" name="leggere" value="il pomeriggio"/> Il pomeriggio
<br />
<input type="checkbox" name="leggere" value="la sera"/> La sera
<br />
<input type="checkbox" name="leggere" value="nei week-end"/>Nei week-end
<br />
<input type="submit" value="Invia">
<input type ="reset" value="annulla ">
</form>

:dipser:
 
ciao
se le opzioni (mattino/sera/pomeriggio) si escludono a vicenda forse è meglio che tu utilizzassi tre radiobutton, in tal caso con lo stesso nome.
inoltre per i value mi sono accorto che è meglio evitare valori con spazi
es.
<input type="checkbox" name="nei_week_end" value="nei_week_end"/>Nei week-end

tanto è solo un valore che poi metti nel db
comunque ora copio il codice e provo
 
ciao
il tuo codice con i tre nomi diversi e funziona perfettamente.
invia i campi selezionati (uno o due o tre), quindi il problema non è nel form
 
ecco qua

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>

<body>
<?php
if(isset($_POST['invia']) && $_POST['invia']=="Invia"){
	$nome=$_POST['nome'];
	$pomeriggio=$_POST['il_pomeriggio'];
	if($pomeriggio== NULL){$pomeriggio="";}
	$sera=$_POST['la_sera'];
	if($sera== NULL){$sera="";}
	$weekend=$_POST['nei_week_end'];
	if($weekend== NULL){$weekend="";}
	echo "nome inserito ".$nome."<br>";
	echo "preferenze: ".$pomeriggio."<br>";
	echo "............".$sera."<br>";
	echo "............".$weekend."<br>";
}
?>



<form name="questionario" action="<?php $_SERVER['PHP_SELF'] ?>" method="post"> 
Il suo nome:<input type="text" name="nome" size="30" maxlength="40"><br><br>

1)Quando preferisci leggere? 
<br />
<input type="checkbox" name="il_pomeriggio" value="il pomeriggio"/> Il pomeriggio
<br />
<input type="checkbox" name="la_sera" value="la sera"/> La sera
<br /> 
<input type="checkbox" name="nei_week_end" value="nei_week_end"/>Nei week-end
<br />
<input type="submit" name="invia" value="Invia">
<input type ="reset" value="annulla "> 
</form>

</body>
</html>

ho cambiato action per non farmi una pag in più, ho aggiunto il nome al submit.

il problema può essere nell'insert nel db in quanto se non selzionati i check restituiscono NULL, e non so se nella tabella i campi possono essere vuoti (NOT NUL o NUL)
 
No avevo chiesto quell'altro...
Comunque potrebbe tornare utile quel codice che hai postato anche se dovresti cambiare il nome delle variabili...
 
Ultima modifica:
risposta

vi ringrazio per l'aiuto, eliminerò i nomi con gli spazi mi pare unottima cosa e invio il codice PHP per l'invio dei dati del form:
Impostato come segue con tre name e tre campi diversi nella tabella del Database mn ha dato errore e non ha inviato nulla:
<?php
$inserimento=mysql_query("insert into alunni (nome,il_pomeriggio,la_sera,nei_week-end) values (\"$HTTP_POST_VARS[nome]\",\"$HTTP_POST_VARS[il_pomeriggio]\",\"$HTTP_POST_VARS[la_sera]\",\"$HTTP_POST_VARS[nei_week-end]\")");
echo "messaggio inviato con successo";
?>
Con un solo campo(leggere) nella tabella del Database invece ( impostato nella pagina form come ho fatto vedere ) invia un solo valore anche se ne seleziono più di uno.
<?php
$inserimento=mysql_query("insert into alunni (nome,leggere) values (\"$HTTP_POST_VARS[nome]\",\"$HTTP_POST_VARS[leggere]")");
echo "messaggio inviato con successo";
?>
Ora se ho ben capito il tutto dovrebbe funzionare inserendo nella pagina form, con un solo campo(preferenze) nella tabella del Database,
il codice suggeritomi (forse è cosi).Vorrei capire prima di provare:
<?php
if(isset($_POST['invia']) && $_POST['invia']=="Invia"){
$nome=$_POST['nome'];
$pomeriggio=$_POST['il_pomeriggio'];
if($pomeriggio== NULL){$pomeriggio="";}
$sera=$_POST['la_sera'];
if($sera== NULL){$sera="";}
$weekend=$_POST['nei_week_end'];
if($weekend== NULL){$weekend="";}
echo "nome inserito ".$nome."<br>";
echo "preferenze: ".$pomeriggio."<br>";
echo "preferenze".$sera."<br>";
echo "preferenze".$weekend."<br>";
}
?>
 

Discussioni simili