- Home
- Categorie
- Coding e Sistemistica
- PHP
- aiuto semplificare controllo per calcolare il numero di risposte inviate da un form
-
aiuto semplificare controllo per calcolare il numero di risposte inviate da un form
<?php
Ciao ragazzi, allora ho un form con delle domande,
l'utente ne deve scegliere una soltanto e rispondere,
questo il form (pagina: domanda.php):
$domanda1="Qual è il nome del cane?";
$domanda2="Qual è il nome del gatto?";
$domanda3="Qual è il nome del topolino?";print"Ti preghiamo di scegliere e rispondere ad una sola domanda. Grazie.";
print"<form action=stampa_domanda.php method=post>
Qual è il nome del cane?
<input type=hidden name=domanda1 value="$domanda1"><br>
<input type=text name=risposta1 value=""><br><br>
Qual è il nome del gatto?
<input type=hidden name=domanda2 value="$domanda2"><br>
<input type=text name=risposta2 value=""><br><br>
Qual è il nome del topolino?
<input type=hidden name=domanda3 value="$domanda3"><br>
<input type=text name=risposta3 value=""><br><br><input type=\"submit\" name=\"Invia\" value=Invia> <input type=\"reset\" name=\"canc\" value=Canc> </form>";
Cliccando sul pulsante submit la domanda e la risposta
vengono inviate al file "stampa_domanda.php" e,
dal momento che l'utente deve scegliere una sola domanda e non una di più
eseguo questo controllo (pagina: stampa_domanda.php) :
se l'utente ha risposto a tutte le domande o a più di una
**if (($risposta1 != "") && ($risposta2 != "") && ($risposta3 != "") ||
($risposta1 != "") && ($risposta2 != "") && ($risposta3 == "") ||
($risposta2 != "") && ($risposta3 != "") && ($risposta1 == "") ||
($risposta3 != "") && ($risposta1 != "") && ($risposta2 == ""))
** {
header("Refresh: 5; URL=domanda.php");
print "<center>Attenzione! Rispondi a una sola domanda.<br>";
print "<a href="domanda.php">Torna Indietro</a></center>";} else # altrimanti se come da regolamento ha risposto a una sola domanda { if(($risposta1 != "")||($risposta2 != "")||($risposta3 != "")) { # se ha risposto a questa e non alle altre due la domanda scelta e la risposta sono queste if(($risposta1 != "") && ($risposta2 == "") && ($risposta3 == "")) { $domanda_scelta=$domanda1; $risposta_data=$risposta1; } # se ha risposto a questa e non alle altre due la domanda scelta e la risposta sono queste if (($risposta2 != "") && ($risposta1 == "") && ($risposta3 == "")) { $domanda_scelta=$domanda2; $risposta_data=$risposta2; } # se ha risposto a questa e non alle altre due la domanda scelta e la risposta sono queste if (($risposta3 != "") && ($risposta1 == "") && ($risposta2 == "")) { $domanda_scelta=$domanda3; $risposta_data=$risposta3; } header("Refresh: 5; URL=domanda.php"); print "<center>Hai scelto di rispondere alla domanda:<br><b> " . $domanda_scelta . "</b><br>"; print "La risposta che hai dato è:<b> " . $risposta_data . "</b></center>"; } else # se non ha risposto a nessuna domanda { header("Refresh: 3; URL=domanda.php"); print "<center>Non hai risposto a nessuna domanda!<br>"; print "<a href=\"domanda.php\">Torna Indietro</a></center>"; } }
allora lo script ed il controllo funzionano perfettamente ma, ora mi sorge un problema,
cioè dovrei aumentare il numero di domande da tre a 6 oppure 10 addirittura ma, fare il controllo
come quello che ho fatto e che ho evidenziato in grassetto diventa un lavoro assai tedioso oltre che uno spreco di
risorse,
potete aiutarmi xfavore a semplificare questo controllo?
Sto smanettando da pochissimo col php, forse con un array contenente tutte le domande e/o risposte potrei risolvere
il problemino?
Chi può aiutarmi a completare? Ciao e grazie a tutti.
?>
-
metti un radiobutton davanti alla domanda, per te la risposta giusta è quella data per la domanda con il radiobutton checkato, il resto lo ignori.
-
Oppure un menu a tendina dove scegliere la domanda a cui si vuole rispondere e prendi il valore passato dall'option della tendina ignorando le altre...
keiske
-
ok ragazzi, ottime idee, provo qual è quella più adatta... sono entrambe ottime. vi farò sapere... Ciao