Categories: PHP

Presentare i Risultati degli Utenti, la Classifica in PHP

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.

<< Lezione PrecedenteInizio Tutorial

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Published by
Giampaolo Rossi
Tags: MySQL

Recent Posts

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

1 anno ago

Software di Magazzino Gratuito

MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→

1 anno ago

Mettere il PC in Lock Screen

In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…

3 anni ago

Fare il reset togliendo la corrente

In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…

3 anni ago

Prossimi Aggiornamenti Software

Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…

3 anni ago

Come Eliminare i Files in Windows

Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→

4 anni ago