• User Attivo

    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 risultato

    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"; // 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


  • User Attivo

    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!


  • User Attivo

    Ciao,

    correggi così:
    [PHP]
    $frase1=isset($_POST['R1'])?$_POST['R1']:"";
    $frase2=isset($_POST['R2'])?$_POST['R2']:"";
    $frase3=isset($_POST['R3'])?$_POST['R3']:"";
    [/PHP]

    Alessandro


  • User Attivo

    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!


  • User Attivo

    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


  • User Attivo

    Grazie Ale, ora funziona, grazie per la pazienza 😉


  • User Attivo

    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!


  • User Attivo

    Grazie anche a te Sups 😉 ma era quello che gentilmente mi ha insegnato negli ultimi messaggi Alessandro.
    Grazie!:)


  • User Attivo

    Non avevo letto sopra 😄


  • User Attivo

    😉