Nell’articolo scorso, dedicato a questa breve guida su come creare un semplice questionario in PHP, ci siamo focalizzati sulle domande e rispettive risposte con punteggio, questa volta vedremo come mostrare il totale stabilito, agli utenti che hanno terminato la prova e visualizzare anche la classifica delle prime 50 posizioni, inserendo un nickname. Passiamo subito a mostrare la pagina web che svolge questo compito, poi la commenteremo:
<?php $hostname = "xxxxx"; $database = "xxxxx"; $username = "xxxxx"; $password = "xxxxx"; $classifica = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); $argomento = $_REQUEST['xxxxx']; if (strlen($argomento) <= 0) { mysql_close($classifica); header("location:../"); exit(); } mysql_select_db($database, $classifica); $totPunteggio = 0; $punteggio = mysql_query("SELECT * FROM Domande WHERE Argomento = ". $argomento, $classifica) or die(mysql_error()); $row_punteggio = mysql_fetch_assoc($punteggio); $num_punteggio = mysql_num_rows($punteggio); for ($i = 0; $i < $num_punteggio; $i++) { $r1 = $row_punteggio['Valore1']; $r2 = $row_punteggio['Valore2']; $r3 = $row_punteggio['Valore3']; if ($r2 > $r1) $r1 = $r2; if ($r3 > $r1) $r1 = $r3; $totPunteggio += $r1; $row_punteggio = mysql_fetch_assoc($punteggio); } mysql_free_result($punteggio); $data_classifica = mysql_query("SELECT * FROM Classifica WHERE Argomento = ".$argomento. " ORDER BY Punteggio DESC LIMIT 0,50", $classifica) or die(mysql_error()); $row_classifica = mysql_fetch_assoc($data_classifica); $num_classifica = mysql_num_rows($data_classifica); ?> <html> <head> <title>Classifica</title> <meta name="Description" content="Classifica."> </head> <body> <table align="center" width="970" height="300" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="970" align="center" valign="top"> <br> <p align="center" class="firsttitle">Classifica</p> <br> <?php switch ($argomento) { case 1: $str_argomento = "Java"; break; case 2: $str_argomento = "C/C++"; break; ... } echo '<p align="center">Benvenuto nella classifica dei primi 50 posti del questionario su '.$str_argomento.'</p>'; echo '<p align="center">Il punteggio massimo che si può ottenere in questa prova è: <b>'.$totPunteggio. '</b></p><br><br>'; echo '<table width="500" align="center" cellpadding="0" cellspacing="0" border="0">'; for ($i = 0; $i < $num_classifica; $i++) { $j = $i + 1; echo '<tr>'; if (($i % 2) == 0) { echo '<td width="50" align="center" bgcolor="#517993">'.$j.'</td>'; echo '<td width="350" align="left" bgcolor="#517993">' .$row_classifica['Nome'].'</td>'; echo '<td width="100" align="center" bgcolor="#517993">' .$row_classifica['Punteggio'].'</td>'; } else { echo '<td width="50" align="center" bgcolor="#43647A">'.$j.'</td>'; echo '<td width="350" align="left" bgcolor="#43647A">' .$row_classifica['Nome'].'</td>'; echo '<td width="100" align="center" bgcolor="#43647A">' .$row_classifica['Punteggio'].'</td>'; } echo '</tr>'; $row_classifica = mysql_fetch_assoc($data_classifica); } echo '</table><br><br>'; echo '<p align="center">Quanto conosci '.$str_argomento.'? Fai il <a href="domande_risposte.php?argomento='. $argomento.'">questionario</a> per vedere se rientri in questa classifica.</p>'; ?> </td> </tr> </table> </body> </html> <?php mysql_free_result($data_classifica); mysql_close($classifica); ?>
Come potete notare dal codice, prima viene calcolato il punteggio massimo che è possibile stabilire nella prova, questo è volutamente non fisso per adeguarsi al possibile cambiamento delle domande in futuro, quindi vengono ricavati i primi 50 punteggi più alti della classifica e semplicemente mostrati. Ho inserito anche un piccolo ritocco ai colori della tabella dei punteggi alternando un colore più chiaro ed uno più scuro nel caso sia la riga dispari o pari. Non credo che la pagina sia fonte di grande difficoltà e spero che tutta la serie di questi tre articoli sulla creazione di un questionario in PHP vi possa essere utile per scopo didattico o altro.
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→