Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777

    segnalare la risposta sbagliata

    salve
    ho costruito un quiz con php e mysql
    ho creato un primo file che mi costruisce il form con domande e risposte e un secondo file che me le elabora...
    posto il secondo file
    Codice PHP:
    <?

    $var
    =array("a","$_POST[conta1]","$_POST[conta2]","$_POST[conta3]","$_POST[conta4]","$_POST[conta5]","$_POST[conta6]","$_POST[conta7]","$_POST[conta8]","$_POST[conta9]","$_POST[conta10]");
    $risposte=array("a","$_POST[_1]","$_POST[_2]","$_POST[_3]","$_POST[_4]","$_POST[_5]","$_POST[_6]","$_POST[_7]","$_POST[_8]","$_POST[_9]","$_POST[_10]");
    for(
    $u=1;$u<=10;$u++){
    if(empty(
    $risposte[$u])){
    $risposte[$u]="Nessuna risposta";
    }
    }
    for (
    $n=1;$n<11;$n++){
    $lettura_risultatimysql_query("SELECT contatore,domanda,ans1,ans2,ans3,ans4,esatta,descrizione FROM quiz WHERE contatore='$var[$n]'")or(die(mysql_error()));
    while(
    $scatola_temporanea=mysql_fetch_array($lettura_risultati)){
                        
    $esatta$scatola_temporanea['esatta'];
                        
    $domanda$scatola_temporanea['domanda'];
                        
    $risp1 $scatola_temporanea['ans1'];
                        
    $risp2 $scatola_temporanea['ans2'];
                        
    $risp3 $scatola_temporanea['ans3'];
                        
    $risp4 $scatola_temporanea['ans4'];
                        
    $descrizione $scatola_temporanea['descrizione'];
                        }
                        
    $tipo=array("a",$risp1,$risp2,$risp3,$risp4);
                        for (
    $l=1;$l<=4;$l++){
                        if (
    $l==$esatta){
                        
    $tipo[$l]="<span style='color:green;font-weight:bold'>$tipo[$l]</span>";
                        }
                        }
                        do{
                        
    $t++;
                        if(
    $esatta==$risposte[$t]){
                        
    $esito[$t]= "[b]Domanda $t$domanda[/b]
    a. 
    $tipo[1]
    b. 
    $tipo[2]
    c. 
    $tipo[3]
    d. 
    $tipo[4]

    Esito: <span style='color:green'>esatta</span>
    Risposta esatta: <span style='color:blue'>
    $esatta</span>

    [b]Spiegazione:[/b]
    $descrizione

    "
    ;
                        
    $v++;                
                        }
                        else{
                        
    $esito[$t]= "[b]Domanda $t$domanda[/b]
    a. 
    $tipo[1]
    b. 
    $tipo[2]
    c. 
    $tipo[3]
    d. 
    $tipo[4]

    Esito: <span style='color:red'>errata</span>
    Hai risposto: <span style='color:blue'>
    $risposte[$t]</span>
    Risposta esatta: <span style='color:blue'>
    $esatta</span>

    [b]Spiegazione:[/b]
    $descrizione

    "
    ;
                        }
                        }
                        while(
    $t==11);    
    }
    echo 
    "<a href=\"http://www.atuttascienza.altervista.org/quiz.php\">Gioca a un altro quiz</a> | <a href=\"http://www.atuttascienza.altervista.org/quiz.php\">Pagina principale quiz</a> | <a href=\"http://www.atuttascienza.altervista.org\">Home di Atuttascienza</a>

    "
    ;
    if(empty(
    $v)){
    echo 
    "<span class=\"xiv\">Il tuo punteggio è <span style='color:blue'>0</span> su <span style='color:blue'>10</span>.</span>

    "
    ;
    }
    else{
    echo 
    "<span class=\"xiv\">Il tuo punteggio è <span style='color:blue'>$v</span> su <span style='color:blue'>10</span>.</span>

    "
    ;
    }
    for(
    $x=1;$x<=10;$x++){
    echo 
    "$esito[$x]";
    }

    ?>
    procede tutto bene....
    mi da il punteggio le risposte giusto evidenziate in verde ma non riesco a dire al php di darmi le risposte date dall'utente in rosso nel caso fossero sbagliate
    suggerimenti?

  2. #2
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Hai provato a spostare l'else sotto all' if?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    non ho capito scusami quale else?
    cmq avevo pensato di fare cosi ma non funziona mi colora tutto
    Codice PHP:
    for ($r=1;$r<=10;$r++){
                        if(
    $risposte[$r]==1){
                        
    $tipo[1]="<span style='color:red;font-weight:bold'>$tipo[1]</span>";
                        }
                        if(
    $risposte[$r]==2){
                        
    $tipo[2]="<span style='color:red;font-weight:bold'>$tipo[2]</span>";
                        }
                        if(
    $risposte[$r]==3){
                        
    $tipo[3]="<span style='color:red;font-weight:bold'>$tipo[3]</span>";
                        }
                        if(
    $risposte[$r]==4){
                        
    $tipo[4]="<span style='color:red;font-weight:bold'>$tipo[4]</span>";
                        }

                        } 
    eppure il ragionamento è se gli elementi dell'array che sono le risposte ai quiz corrispondono colora di rosso le relative risposte...però me le colora tutte...dove sbaglio?

  4. #4
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    prova a mettere così:

    Codice PHP:
    $tipo=array("a",$risp1,$risp2,$risp3,$risp4);
                        for (
    $l=1;$l<=4;$l++){
                        if (
    $l==$esatta){
                        
    $tipo[$l]="<span style='color:green;font-weight:bold'>$tipo[$l]</span>";
                        }
                        else{
                        
    $esito[$t]= "[b]Domanda $t$domanda[/b]
    a. 
    $tipo[1]
    b. 
    $tipo[2]
    c. 
    $tipo[3]
    d. 
    $tipo[4]

    Esito: <span style='color:red'>errata</span>
    Hai risposto: <span style='color:blue'>
    $risposte[$t]</span>
    Risposta esatta: <span style='color:blue'>
    $esatta</span>

    [b]Spiegazione:[/b]
    $descrizione

    "
    ;
                        }
                        }
                        do{
                        
    $t++;
                        if(
    $esatta==$risposte[$t]){
                        
    $esito[$t]= "[b]Domanda $t$domanda[/b]
    a. 
    $tipo[1]
    b. 
    $tipo[2]
    c. 
    $tipo[3]
    d. 
    $tipo[4]

    Esito: <span style='color:green'>esatta</span>
    Risposta esatta: <span style='color:blue'>
    $esatta</span>

    [b]Spiegazione:[/b]
    $descrizione

    "
    ;
                        
    $v++;                
                        }
                        }
                        while(
    $t==11); 

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    no non va
    ho provato cosi
    Codice PHP:
    for ($l=1;$l<=4;$l++){
                        if (
    $l==$esatta){
                        
    $tipo[$l]="<span style='color:green;font-weight:bold'>$tipo[$l]</span>";
                        }
                        }
                        do{
                        
    $r++;
                        if(
    $risposte[$r]=1){
                        
    $result="<span style='color:red;font-weight:bold'>$tipo[1]</span>
    $tipo[2]
    $tipo[3]
    $tipo[4]
    "
    ;
                        }
                        elseif(
    $risposte[$r]=2){
                        
    $result="$tipo[1]
    <span style='color:red;font-weight:bold'>
    $tipo[2]</span>
    $tipo[3]
    $tipo[4]
    "
    ;
                        }
                        elseif(
    $risposte[$r]=3){
                        
    $result="$tipo[1]
    $tipo[2]
    <span style='color:red;font-weight:bold'>
    $tipo[3]</span>
    $tipo[4]
    "
    ;
                        }
                        elseif(
    $risposte[$r]=4){
                        
    $result="$tipo[1]
    $tipo[2]
    $tipo[3]
    <span style='color:red;font-weight:bold'>
    $tipo[4]</span>";
                        }

                        }
                        while(
    $r==11); 
                        
                        do{
                        
    $t++;
                        if(
    $esatta==$risposte[$t]){
                        
    $esito[$t]= "[b]Domanda $t$domanda[/b]
    $result

    Esito: <span style='color:green'>esatta</span>
    Risposta esatta: <span style='color:blue'>
    $esatta</span>

    [b]Spiegazione:[/b]
    $descrizione

    "
    ;
                        
    $v++;                
                        }
                        else{
                        
    $esito[$t]= "[b]Domanda $t$domanda[/b]
    $result

    Esito: <span style='color:red'>errata</span>
    Hai risposto: <span style='color:blue'>
    $risposte[$t]</span>
    Risposta esatta: <span style='color:blue'>
    $esatta</span>

    [b]Spiegazione:[/b]
    $descrizione

    "
    ;
                        }
                        }
                        while(
    $t==11); 
    però ora mi dice che la mia risposta è sempre la 1. in pratica il ragionamento è quello di impostare le risposte a monte e rilasciarle impostate a valle con $result

  6. #6
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Converti tutto in una switch e metti dopo tutti i casi, default: alla fine, con il messaggio errore, così sse non è niente, va all'ultima istruzione, quella di errore.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    ho messo così
    Codice PHP:
    do{
                        
    $r++;
                        switch (
    $risposte[$r]) {
                         case 
    '1':
                        
    $result="<span style='color:red;font-weight:bold'>$tipo[1]</span>
    $tipo[2]
    $tipo[3]
    $tipo[4]
    "
    ;
                        break;
                        case 
    '2':
                        
    $result="$tipo[1]
    <span style='color:red;font-weight:bold'>
    $tipo[2]</span>
    $tipo[3]
    $tipo[4]
    "
    ;
                        break;
                        case 
    '3':
                        
    $result="$tipo[1]
    $tipo[2]
    <span style='color:red;font-weight:bold'>
    $tipo[3]</span>
    $tipo[4]
    "
    ;
                        break;
                        case 
    '4':
                        
    $result="$tipo[1]
    $tipo[2]
    $tipo[3]
    <span style='color:red;font-weight:bold'>
    $tipo[4]</span>";
                        break;
                        default:
                        
    $result="$tipo[1]
    $tipo[2]
    $tipo[3]
    $tipo[4]";
                        break;
                        } 
                        }
                        while(
    $r==11);
    do{
                        
    $t++;
                        if(
    $esatta==$risposte[$t]){
                        
    $esito[$t]= "[b]Domanda $t$domanda[/b]
    $tipo[1]
    $tipo[2]
    $tipo[3]
    $tipo[4]

    Esito: <span style='color:green'>esatta</span>
    Risposta esatta: <span style='color:blue'>
    $esatta</span>

    [b]Spiegazione:[/b]
    $descrizione

    "
    ;
                        
    $v++;                
                        }
                        else{
                        
    $esito[$t]= "[b]Domanda $t$domanda[/b]
    $result

    Esito: <span style='color:red'>errata</span>
    Hai risposto: <span style='color:blue'>
    $risposte[$t]</span>
    Risposta esatta: <span style='color:blue'>
    $esatta</span>

    [b]Spiegazione:[/b]
    $descrizione

    "
    ;
                        }
                        }
                        while(
    $t==11); 
    sembra funzionare...ora faccio qualche prova...

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.