- Home
- Categorie
- Coding e Sistemistica
- Coding
- Tabella per punteggio
-
Se fai i controlli con un IF hai solo due possibili risultati: GIUSTA o ERRATA.
Se non rispondendo vuoi che venga visualizzato un diverso messaggio, devi aggiungere un controllo.Per quanto riguarda il secondo problema, i risultati devono esser noti solo al "server" e non visibili ad altri.
Possibile soluzione:
Il form è unico (non tre) e viene inviato a risultato.php(?):
<form action="risultato.php" method="post"> <p><b>Qual è? </b></p> <input type="radio" name="R1" value="0">a</input><br> <input type="radio" name="R1" value="1">b</input><br> <input type="radio" name="R1" value="2">c</input><br> <input type="radio" name="R1" value="3">d</input><br><br> <p><b>La valutazione deve durare?</b></p> <input type="radio" name="R2" value="0">5 secondi</input><br> <input type="radio" name="R2" value="1">10 secondi</input><br> <input type="radio" name="R2" value="2">30 secondi</input><br> <input type="radio" name="R2" value="3">40 secondi</input><br><br> <p><b>Come mi chiamo?</b></p> <input type="radio" name="R3" value="3">Mario</input><br> <input type="radio" name="R3" value="2">Fabrizio</input><br> <input type="radio" name="R3" value="1">Aldo</input><br> <input type="radio" name="R3" value="0">Michele</input><br><br> <input type="submit" value="Rispondi" /> </form>
[php]
$risposta_corretta_domanda1=1;
$risposta_corretta_domanda2=1;
$risposta_corretta_domanda3=2;$frase1=$_POST['R1']; // variabile prima domanda
$frase2=$_POST['R2']; // variabile seconda domanda
$frase3=$_POST['R3']; // variabile terza domanda
$risultato = 0; // variabile del risultatoif($frase1 == $risposta_corretta_domanda1) {
$risultato++;
echo "Risposta 1 esatta!<br>";
} else {
if ($frase1 ="") echo "Risposta 1: NON HAI RISPOSTO<br>";
else echo "Risposta 1 errata! RIPROVA<br>";
}if($frase2 == $risposta_corretta_domanda2) {
$risultato++;
echo "Risposta 2 esatta!<br>";
} else {
if ($frase2 ="") echo "Risposta 2: NON HAI RISPOSTO<br>";
else echo "Risposta 2 errata! RIPROVA<br>";
}if($frase3 == $risposta_corretta_domanda3) {
$risultato++;
echo "Risposta 3 esatta!<br>";
} else {
if ($frase3 ="") echo "Risposta 3: NON HAI RISPOSTO<br>";
else echo "Risposta 3 errata! RIPROVA<br>";
}$tot = ($risultato == 1) ? "$risultato punto" : "$risultato punti"; // me la puoi leggere/spiegare questa per favore?
echo "Hai totalizzato $tot";
?>
[/php]Questo codice non è che sia il massimo tecnicamente, anzi... andrebbe pulito un pò.
Comunque, se non ho sbagliato con qualche copia/incolla, dovrebbe funzionare.Alessandro
-
Ciao alessandro! Ti ringrazio, ho provato ma :bho: mi dà questo errore
Undefined index: R3 in c:\programmi\easyphp1-8\www\php.php on line 9
Grazie!
-
Ciao,
correggi così:
[PHP]
$frase1=isset($_POST['R1'])?$_POST['R1']:"";
$frase2=isset($_POST['R2'])?$_POST['R2']:"";
$frase3=isset($_POST['R3'])?$_POST['R3']:"";
[/PHP]Alessandro
-
Ciao
Nulla neanche con la correzione, cioè con la variabile senza risposta definita :bho:
[php]<?php
$risposta_corretta_domanda1=1;
$risposta_corretta_domanda2=1;
$risposta_corretta_domanda3=2;$frase1=isset($_POST['R1'])?$_POST['R1']:"";
$frase2=isset($_POST['R2'])?$_POST['R2']:"";
$frase3=isset($_POST['R3'])?$_POST['R3']:"";
$risultato = 0;if($frase1 == $risposta_corretta_domanda1) {
$risultato++;
echo "Risposta 1 esatta!<br>";
} else {
if ($frase1 ="") echo "Risposta 1: NON HAI RISPOSTO<br>";
else echo "Risposta 1 errata! RIPROVA<br>";
}if($frase2 == $risposta_corretta_domanda2) {
$risultato++;
echo "Risposta 2 esatta!<br>";
} else {
if ($frase2 ="") echo "Risposta 2: NON HAI RISPOSTO<br>";
else echo "Risposta 2 errata! RIPROVA<br>";
}if($frase3 == $risposta_corretta_domanda3) {
$risultato++;
echo "Risposta 3 esatta!<br>";
} else {
if ($frase3 ="") echo "Risposta 3: NON HAI RISPOSTO<br>";
else echo "Risposta 3 errata! RIPROVA<br>";
}$tot = ($risultato == 1) ? "$risultato punto" : "$risultato punti";
echo "Hai totalizzato $tot";
?>
[/php]Grazie!
-
Errore di battitura mio...
Correggi tutti i controlli sulla risposta non data mettendo == invece di =
Es.if ($frase2 **== **"") echo "Risposta 2: NON HAI RISPOSTO<br>";
Alessandro
-
Grazie Ale, ora funziona, grazie per la pazienza
-
Prova in questo modo:
[php]
if($frase1 == $risposta_corretta_domanda1) {
$risultato++;
echo "Risposta 1 esatta!<br>";
}
else if($frase1 == "")
echo "Risposta 1: NON HAI RISPOSTO<br>";
else
echo "Risposta 1 errata! RIPROVA<br>";
//...
[/php]In particolare **if($frase1 == "") **perchè if($frase1 = "") riassegna la variabile a valore vuoto.
Ciao!
-
Grazie anche a te Sups
ma era quello che gentilmente mi ha insegnato negli ultimi messaggi Alessandro.
Grazie!:)
-
Non avevo letto sopra
-