- Home
- Categorie
- Coding e Sistemistica
- Coding
- Tabella per punteggio
-
Tabella per punteggio
Ciao! Ho fatto una serie di domande con risposte multiple, ora vorrei fare una tabella punteggio per ogni utente.
Sapete darmi qualche dritta per favore?
Grazie!
-
Ho fatto questo codice ma mi funziona parzialmente, mi sbaglia i punteggi, dove sbaglio?
[PHP]<?php
$frase1=$_POST['R1'];
$frase2=$_POST['R2'];
$crisultato = $_POST['R1'] + $_POST['R2'];if($frase1 == '0') {
echo 'Risposta 1 errata! RIPROVA<br>';
} else {
$crisultato = '1';
echo "Risposta 1 esatta!<br>";
}if($frase2 == '0') {
echo 'Risposta 2 errata! RIPROVA<br>';
} else {
$crisultato = $crisultato + 1;
echo "Risposta 2 esatta!<br>";
}switch($crisultato) {
case '1':
echo "Hai totalizzato 1 punto";
break;
case '2':
echo "Hai totalizzato 2 punti";
break;
}?> [/PHP]
Grazie!
-
Prova in questo modo:
[php]
$frase1=$_POST['R1'];
$frase2=$_POST['R2'];
$crisultato = 0;if($frase1 == '0') {
echo "Risposta 1 errata! RIPROVA<br>";
} else {
$crisultato++;
echo "Risposta 1 esatta!<br>";
}if($frase2 == '0') {
echo "Risposta 2 errata! RIPROVA<br>";
} else {
$crisultato++;
echo "Risposta 2 esatta!<br>";
}$tot = ($crisultato == 1) ? "$crisultato punto" : "$crisultato punti";
echo "Hai totalizzato $tot";
[/php]Ciao!
-
Ti ringrazio moltissimo Sups
Stò cercando di capirlo...ho commentato quello che ho capito e quello che non ho capito...:?[PHP]<?php
$frase1=$_POST['R1']; // variabile prima domanda
$frase2=$_POST['R2']; // variabile seconda domanda
$frase3=$_POST['R3']; // variabile terza domanda
$risultato = 0; // variabile del risultato
if($frase1 == '0') { // se la variabile della prima domanda è uguale a 0
echo "Risposta 1 errata! RIPROVA<br>"; // stampa Risposta 1 errata! RIPROVA
} else { // altrimenti
$risultato++; // variabile del risultato incrementato di 1 punto
echo "Risposta 1 esatta!<br>"; // stampa Risposta 1 esatta!
}
if($frase2 == '0') {
echo "Risposta 2 errata! RIPROVA<br>";
} else {
$risultato++;
echo "Risposta 2 esatta!<br>";
}
if($frase3 == '0') {
echo "Risposta 3 errata! RIPROVA<br>";
} else {
$risultato++;
echo "Risposta 3 esatta!<br>";
}
$tot = ($risultato == 1) ? "$risultato punto" : "$risultato punti"; // me la puoi leggere/spiegare questa per favore?
echo "Hai totalizzato $tot";?> [/PHP]
Grazie!!!:)
-
Il " ? : " si chiama operatore ternario e funziona iun questo modo:
espressione ? espressione_v : espressione_f
Se **espressione **è vera viene eseguita espressione_v, se è falsa viene eseguita espressione_f.
In questo caso se il risultato è uguale a uno la variabile tot è uguale a "1 punto", se è diversa da uno, come ad esempio 0, 2, 3, ... tot diventa "0 punti", "2 punti", "3 punti", ...
In altri termini è una semplificazione di questo IF:
[php]
if($risultato == 1)
$tot = "$risultato punto";
else
$tot = "$risultato punti";
[/php]
-
Grazie Sups, ora me lo vado anche a leggere nel libro che ho comprato...
Poi magari ti chiedo un'altra cosetta, prima voglio provarci da solo
Grassssie!!!
-
Ciao! Porto sù l'argomento
Mi sono accorto che quando non seleziono una risposta il risultato è che mi dà "Hai risposto con successo"
Come fare?
Grazie!
-
Servirebbe una parte del codice html che utilizzi per comporre il form con le domande, forse il problema è in quel punto.
-
Grazie Sups
Il codice html è questo[HTML]<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="0">c</input><br>
<input type="radio" name="R1" value="0">d</input><br><br><form action="controllo1.php" method="post">
<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="0">30 secondi</input><br>
<input type="radio" name="R2" value="0">40 secondi</input><br><br><form action="controllo1.php" method="post">
<p><b>Come mi chiamo?</b></p>
<input type="radio" name="R3" value="0">Mario</input><br>
<input type="radio" name="R3" value="1">Fabrizio</input><br>
<input type="radio" name="R3" value="0">Aldo</input><br>
<input type="radio" name="R3" value="0">Michele</input><br><br>
<input type="submit" value="Rispondi" />
</form>[/HTML]
Grazie!
-
Ciao,
quando non rispondi, in questo controllo:
[php]
if($frase1 == '0') { // se la variabile della prima domanda è uguale a 0
echo "Risposta 1 errata! RIPROVA<br>"; // stampa Risposta 1 errata! RIPROVA
} else { // altrimenti
$risultato++; // variabile del risultato incrementato di 1 punto
echo "Risposta 1 esatta!<br>"; // stampa Risposta 1 esatta!
}
[/php]
e allo stesso modo gli altri succssivi, la condizione ($frase1 == '0') è sempre falsa poichè $frase1=""Possibile soluzione:
[php]
if($frase1 == '1') {
$risultato++;
echo "Risposta 1 esatta!<br>";
} else {
echo "Risposta 1 errata! RIPROVA<br>";
}
[/php]Osservando il tutto, quello che mi chiedo è:
che senso ha un quiz di questo tipo in cui le risposte sono scritte già insieme alle domande?
A chiunque è sufficiente visualizzare il codice html per sapere quali sono le risposte corrette...Alessandro
-
Avevo già provato ma in quel modo, cioè non selezionandola mi dà risposta errata
Cavolo non ci avevo mica pensato per la visualizzazione del codice html...ci sono soluzioni?
Grasssssie!
-
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