Visualizzazione dei risultati da 1 a 7 su 7

Discussione: query con rand()

  1. #1
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489

    query con rand()

    Cia a Tutti,
    ho preparato una tabella che contiene una serie di items ( + di cinque)
    per visualizzarli in modo casuale ho usato Rand() e mi va bene.
    Codice PHP:
    $sql"SELECT * 
    FROM quiz 
    where tema ='
    $tema
    order by rand() 
    limit 5"

    il quesito è: per poter verificare le risposte nella stessa pagina con (un if.. elseif) dovrei poter richiamare gli stessi items scelti dal rand() precedente con un'altra query.
    è possibile?
    come può essere impostata la query?
    grazie

  2. #2
    Puoi spiegarti meglio?
    Hai una tabella MySQL chiamata QUIZ ma come è strutturata?

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    questo è il codice che uso
    la prima query (con Rand) mi richiama 5 items

    Codice PHP:
    if ($tema=$_GET['tema']) 
        {     
    echo 
    "<h1>questionario di "$tema "</h1>"
                echo 
    "<form method=post action=$_SERVER[PHP_SELF]>"
                echo 
    "<table>";         
    $display "SELECT * FROM quiz where tema ='$tema' order by rand() limit 5"
            
    $display mysql_query($display) or die (mysql_error());     
            
    $i=1;             
        while(
    $row =mysql_fetch_array($display)) 
                                { 
                                     
    $id $row["id"];                     
    $question $row["question"]; 
    $opt1 $row["opt1"];     
    $opt2 $row["opt2"]; 
    $opt3 $row["opt3"];         
    $answer $row["answer"];     
    $tema =$row['tema'];     
                                                                   echo 
    "<table>";
    echo 
    "<tr>"
    echo 
    "<input type=hidden name=tema value=\"$tema\">"
                        
    echo 
    "</tr>";                     
    echo 
    "<tr>";                     
    echo 
    "<td colspan=3>
    [b]
    $i-$question[/b]
    </td>"

    echo 
    "</tr>";                     
    $i++;                      
    echo 
    "<tr>"
    echo 
    "[list=1]"
    echo 
    "<td class='td'>[*]$opt1</td>"
                            
    echo 
    "<td><input type=radio  name=q$id value=\"$opt1\"></td>"
    echo 
    "</tr>";
     echo 
    "<tr>"
    echo 
    "<td class='td'>[*]$opt2</td>";
     echo 
    "<td> <input type=radio  name=q$id value=\"$opt2\"></td>";     
    echo 
    "</tr>";
     echo 
    "<tr>";
    echo 
    "<td class='td'>[*]$opt3</td>";                         
    echo 
    "<td><input type=radio  name=q$id value=\"$opt3\"></td>";                         
    echo 
    "[/list]";                     
    echo 
    "</tr>";                 
    echo 
    "</table>";
    }               
    echo 
    "

    "
    ;     
    echo 
    "<input type='submit' value='verifica il risultato' name='submit'>";     
    echo 
    "</form>";     
    echo 
    "<p class='p'>[url='temaquiz.php']torma al menu[/url] | ";     
    echo 
    "[url='esporta.php?tipo=word&tema=$tema']Esporta in Word[/url]"
        } 
    dopo aver fatto la scelta delle risposte vado avanti con il submit
    il confronto delle risposte le ho su tutta la tabella (che può avere anche 50 items, ad esempio)con il codice che segue,
    mentre io vorrei solo per le domande scelte dal rand() della precedente query
    il codice successivo è il seguente:
    Codice PHP:
     elseif($submit

    $tema=$_POST['tema'];
     
    $score 0;
         
    $display "SELECT * FROM quiz where tema ='$tema'";
         
    $display mysql_query($display) or die (mysql_error()); $total mysql_num_rows($display); 
            while (
    $result mysql_fetch_array($display)) 
             {             
    $answer $result["answer"];
     
    $q $result["q"]; 
         if ($
    $q == $answer)  {     
                
    $score++; 
                     }         
    }     
    $perc = ($score *100)/$total
            
    $perc round($perc2);
             echo 
    "<p align=center>[b]il punteggio raggiunto e' " $score " su un totale di " $total ". La percentuale e' "$perc "%[/b]</p>"
        echo 
    "

    "

    i dati della tabella:

    CREATE TABLE quiz (
    id tinyint(4) NOT NULL auto_increment,
    q text NOT NULL,
    question text NOT NULL,
    opt1 text NOT NULL,
    opt2 text NOT NULL,
    opt3 text NOT NULL,
    answer text NOT NULL,
    PRIMARY KEY (id)
    ) TYPE=MyISAM;

    spero che sia chiaro altrimenti chiedi

  4. #4
    Mi servivano solo i dati della tabella, solo che non ho capito di preciso quello che dovrebbe fare lo script.
    Spiegamelo come fosse un algoritmo, perché la mia sensazione è cge forse hai sbagliato ad impostare la tabella del DB.
    Generi 5 domande del quiz in maniera casuale???
    Poi???

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    Nel codice della tabella mi sono dimenticato di un campo:

    CREATE TABLE quiz (
    id tinyint(4) NOT NULL auto_increment,
    q text NOT NULL,
    question text NOT NULL,
    opt1 text NOT NULL,
    opt2 text NOT NULL,
    opt3 text NOT NULL,
    answer text NOT NULL,
    tema text NOT NULL,
    PRIMARY KEY (id)
    ) TYPE=MyISAM;

    la tabella ha molti records divisi per tema (storia, geografia, ecc)

    un esempio descritto:
    ho due pagine php.
    Nella 1 pagina ho l’elenco del campo “ tema” con relativi link che mi portano alla 2 pagina.
    Nella seconda pagina con la prima query ho l’output casuale di 5 domande e tre risposte per ognuna di esse. Grazie al form aggiungo un radio per la scelta della risposta.
    Una volta scelte le risposte ->submit

    E i problemi iniziano qui (elseif)

    Perche il codice che ho inviato nel post mi fa un rapporto tra le risposte esatte e tutte le domande del tema scelto presenti nella tabella (se ho 20 domande di storia, tema scelto dalla prima pagina, mi fa, ad esempio 2 risposte giuste su 20) mentre io vorrei il rapporto solo sulle domande scelte casualmente (non + di 5)
    Magari lo script ideale, magari esiste un altro modo, non lo so. La soluzione if.. elseif mi è sembrata opportuna
    Il problema da risolvere, per a me, sembra come portare le informazioni (i 5 records scelti da Rand()) dal primo if a elseif

    O sbaglio?

  6. #6
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    up

  7. #7
    Non ci ho capito molto sinceramente ma... per portarti dietro quali record sono stati scelti mettili in una variabile hidden del form, o una variabile con dentro i valori son un separatore stile : 1-2-3-4-5 oppure 5 variabili

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.