Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: quiz in php

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777

    quiz in php

    allora io ho un quiz di questo tipo
    questa è struttura del form dove l'action è una pagina php

    domanda 1 ecc ecc.
    risposte
    a<input type=radio value="a" name="_1" id="1_a" >bla bla
    b<input type=radio value="b" name="_1" id="1_a" > bla
    c<input type=radio value="c" name="_1" id="1_a" > bla
    d<input type=radio value="d" name="_1" id="1_a" > bla
    ho riportato soltanto la prima domanda di 10 domande

    ora ho provato con javascript soltanto che ha il difetto che le risposte possono essere sbirciate analizzando il codice html
    cosi ho pensato...è possibile fare un controllo a valle delle risposte anzichè a monte?

    mi piacerebbe avere una pagina php dove si verifichino le risposte
    una roba del tipo cosi
    innanzitutto assegno una variabile per ogni radio selezionato
    $uno=POST_[_1] ecc ecc
    poi devo porre credo una condizione
    se uno == a(che sarebbe esempio la risposta giusta) allora assegna un punto
    altrimenti no
    alla fine mi deve fare la somma e dirmi
    hai totalizzato tot punti su 10..
    c'è un modo veloce per scrivere ciò senza ricorrere a diecimila if else ecc?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    per maggior chiarezza posto il codice php che ho creato

    Codice PHP:
    <?php

    $uno 
    $_POST[_1];
    $due $_POST[_2];
    $var0;
    if (
    $uno==a){
    $var=$var+1;
    echo (
    "[b]Domanda 1[/b]
    Esito: [b]<span style='color:green'>esatta</span>[/b]
    Risposta esatta: [b]<span style='color:blue'>a</span>[/b]"
    );
    }
    else {
    echo (
    "[b]Domanda 1[/b]
    Esito: [b]<span style='color:red'>errata</span>[/b]
    Tua risposta: [b]<span style='color:blue'>
    $uno</span>[/b]
    Risposta corretta: [b]<span style='color:blue'>a</span>[/b]"
    );
    }
    echo(
    "

    "
    );
    if (
    $due==b){
    $var=$var+1;
    echo (
    "[b]Domanda 2[/b]
    Esito: [b]<span style='color:green'>esatta</span>[/b]
    Risposta esatta: [b]<span style='color:blue'>b</span>[/b]"
    );
    }
    else {
    echo (
    "[b]Domanda 2[/b]
    Esito: [b]<span style='color:red'>errata</span>[/b]
    Tua risposta: [b]<span style='color:blue'>
    $uno</span>[/b]
    Risposta corretta: [b]<span style='color:blue'>b</span>[/b]"
    );
    }
    echo(
    "

    "
    );
    echo (
    "Il risultato da te conseguito è $var su 10");

    ?>
    in pratica cosi mi dice se c'è una risposta esatta o sbagliata, la risposta dell'utente e la risposta corretta

    il risultato me lo da alla fine della verifica
    domande:
    vorrei che il risultato me lo scrivesse prima del resoconto delle risposte?. c'è un modo di scrivere per semplificare tutti questi if?

  3. #3
    ma non usi una database?
    V.I.S.T.A. --> Virus Inside, Switch To Apple

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    il fatto è che non sono espertissimo di php

    ma se si potessero mettere tutte le risposte di più quiz in un database e poi appoggiarsi ad un unico file php sarebbe il massimo con risparmo di spazio e fatica...

    per ora mi accontento...
    data la ridondanza delle espressioni forse un ciclo for potrebbe essere utile? solo che io non ho ancora capito bene come adoperare

  5. #5
    ti conviene spendere un po di tempo per fare:

    "ma se si potessero mettere tutte le risposte di più quiz in un database e poi appoggiarsi ad un unico file php sarebbe il massimo con risparmo di spazio e fatica..."

    piuttosto che fare 800000000 file php...fidati
    V.I.S.T.A. --> Virus Inside, Switch To Apple

  6. #6
    Utente di HTML.it L'avatar di marmo79
    Registrato dal
    Dec 2000
    Messaggi
    131
    Ovviamente ti conviene utilizzare un database, però se ti vuoi incasinare la vita....

    Codice PHP:
    echo"<form method=\"POST\" action=\"risposte.php\"";
    //creo un array multidimensionale con domande e risposte possibili
    $quiz=array("come ti chiami?"=>array("Marino","Gianluca","Mario","antonio"),"Chi è più forte?"=>array("Roma","Inter","Lazio","Juve"));
    //inizio il ciclo per ogni valore dell'array
    while(list($domande)=each($quiz)){
        
    $i++;
        echo
    "
    $domande
    "
    ;
        while(list(,
    $risposte)=each($quiz[$domande])){
            
            echo 
    "<input type=\"radio\" name=\"domanda$i\" value=\"$risposte\">$risposte";
        }
    }
    echo
    "
    <input type=\"Submit\"></form>"

    dove risposte.php è

    Codice PHP:
    //creo un array con le risposte corrette,impostando l'indice di partenza a uno
    $risposte_corrette=array(1=>"Marino","Roma");
    //inizio il ciclo
        
    while(list($indice,$risposta)=each($risposte_corrette)){
            
    $numero_domanda="domanda"."$indice";
    //se la risposta è corretta aggiungo un punto
            
    if ($_POST["$numero_domanda"]==$risposta) {
                
    $var++;
            }
    //segnalo gli errori
            
    else echo"Hai sbagliato la risposta $indice;hai risposto $_POST[$numero_domanda] invece la risposta corretta era $risposta!
     "
    ;
            
        }
    //se $var ancora è vuoto i punto sono 0...
        
    if (!$var) {
            
    $var=0;
        }
    //stampo il risultato
        
    echo "Hai totalizzato $var punti!"
    under costrussion

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    Originariamente inviato da marmo79
    Ovviamente ti conviene utilizzare un database, però se ti vuoi incasinare la vita....

    Codice PHP:
    echo"<form method=\"POST\" action=\"risposte.php\"";
    //creo un array multidimensionale con domande e risposte possibili
    $quiz=array("come ti chiami?"=>array("Marino","Gianluca","Mario","antonio"),"Chi è più forte?"=>array("Roma","Inter","Lazio","Juve"));
    //inizio il ciclo per ogni valore dell'array
    while(list($domande)=each($quiz)){
        
    $i++;
        echo
    "
    $domande
    "
    ;
        while(list(,
    $risposte)=each($quiz[$domande])){
            
            echo 
    "<input type=\"radio\" name=\"domanda$i\" value=\"$risposte\">$risposte";
        }
    }
    echo
    "
    <input type=\"Submit\"></form>"

    dove risposte.php è

    Codice PHP:
    //creo un array con le risposte corrette,impostando l'indice di partenza a uno
    $risposte_corrette=array(1=>"Marino","Roma");
    //inizio il ciclo
        
    while(list($indice,$risposta)=each($risposte_corrette)){
            
    $numero_domanda="domanda"."$indice";
    //se la risposta è corretta aggiungo un punto
            
    if ($_POST["$numero_domanda"]==$risposta) {
                
    $var++;
            }
    //segnalo gli errori
            
    else echo"Hai sbagliato la risposta $indice;hai risposto $_POST[$numero_domanda] invece la risposta corretta era $risposta!
     "
    ;
            
        }
    //se $var ancora è vuoto i punto sono 0...
        
    if (!$var) {
            
    $var=0;
        }
    //stampo il risultato
        
    echo "Hai totalizzato $var punti!"
    grazie mi studio il codice....sono alle prime armi con php ma sto cercando di imparare mySql...è questo che mi devo imparare per il database?

  8. #8
    Utente di HTML.it L'avatar di marmo79
    Registrato dal
    Dec 2000
    Messaggi
    131
    Guarda usare mysql è abbastanza semplice, poi ci sono molte guide anche su questo sito...
    under costrussion

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    Originariamente inviato da marmo79
    Guarda usare mysql è abbastanza semplice, poi ci sono molte guide anche su questo sito...
    ok mi metto a studiare

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    Originariamente inviato da marmo79
    Guarda usare mysql è abbastanza semplice, poi ci sono molte guide anche su questo sito...
    ok senti un'altra come si fa in php a impedire che l'utente dopo aver selezionato una risposta di una domanda, non possa più cambiare la sua selezione?

    so farlo con javascript però se il javascript di qualche utente è disabilitato il controllo non avviene più
    in pratica io dico all'utente se tu selezioni ti mando un alert

    c'è un modo in php?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.