Categories: PHP

Visualizzare Liste di Valori con PHP e MySQL

Vediamo come sia possibile elencare un determinato numero di record in una pagina scritta in PHP con la possibilità di navigazione tra i valori residenti su di un database MySQL. La prima operazione da fare è creare un elenco in un archivio da posizionare su di un server dati, per tale scopo utilizzerò la tabella dei comuni in un database MySQL, precisamente quello di nome vikings su di un mio server di prova, ma la stessa operazione può essere compiuta molto facilmente su qualsiasi altro server. Vediamo quindi il codice della pagina PHP che mostra una lista di 20 valori per pagina con possibilità di muoversi andando avanti ed indietro:

<?php

   // Recuperiamo i valori della pagina
   $page = $_REQUEST['pagina'];
   $valxpage = $_REQUEST['valperpagina'];

   if (strlen($page) <= 0)
      $page = 1;
   if (strlen($valxpage) <= 0)
      $valxpage = 20;

   // Apro la connessione ai comuni nel database vikings
   $my_server = mysql_connect("localhost", "root", "") or
       trigger_error(mysql_error(),E_USER_ERROR);
   mysql_select_db("vikings", $my_server);
   $query = "SELECT * FROM comuni ORDER BY Comune";
   $comuni = mysql_query($query, $my_server) or
       die(mysql_error());
   $row_comuni = mysql_fetch_assoc($comuni);
   $tot_comuni = mysql_num_rows($comuni);

   // Calcolo l'ultima pagina
   $last_page = (int)($tot_comuni / $valxpage);
   if (($tot_comuni % $valxpage) > 0)
      $last_page++;

  // Eseguo il movimento
   if (strlen($_REQUEST['successivo']) > 0)
      $page++;
   else if (strlen($_REQUEST['ultimo']) > 0)
      $page = $last_page;
   else if (strlen($_REQUEST['precedente']) > 0)
      $page--;
   else if (strlen($_REQUEST['primo']) > 0)
      $page = 1;

   // vado avanti fino alla pagina selezionata
   if ($page > 1)
   {
      $numrec = $valxpage * ($page - 1);
      for ($i = 0; $i < $numrec; $i++)
      {
         $row_comuni = mysql_fetch_assoc($comuni);
         if (!$row_comuni)
           break;
      }
   }
?>

<html>
<head><title>Lista Comuni</title></head>
<body>

<table width="800" align="center" cellpadding="0"
        cellspacing="0" border="0">
<tr>
   <td align="center" height="50" valign="middle" colspan="5"
       bgcolor="#bababa" style="font-size:24px;font-weight:bold"
       >Lista dei comuni</td>
</tr>
<tr>
   <td width="200" align="center" height="40" valign="middle"
        bgcolor="#eeeeee" style="font-size:18px;font-weight:normal">
        <i>Comune</i></td>
   <td width="200" align="center" height="40" valign="middle"
        bgcolor="#eeeeee" style="font-size:18px;font-weight:normal">
        <i>C.A.P.</i></td>
   <td width="200" align="center" height="40" valign="middle"
        bgcolor="#eeeeee" style="font-size:18px;font-weight:normal">
        <i>Provincia</i></td>
   <td width="200" align="center" height="40 "valign="middle"
        bgcolor="#eeeeee" style="font-size:18px;font-weight:normal">
        <i>Regione</i></td>
   <td width="200" align="center" height="40" valign="middle"
        bgcolor="#eeeeee" style="font-size:18px;font-weight:normal">
        <i>Cod.Fisc.</i></td>
</tr>

<?php

   for ($i = 0; $i < $valxpage; $i++)
   {
      if (!$row_comuni)
         break;

      echo '<tr>';
      echo '<td width="200" align="center">'.
           $row_comuni['Comune'].'</td>';
      echo '<td width="200" align="center">'.
           $row_comuni['CAP'].'</td>';
      echo '<td width="200" align="center">'.
           $row_comuni['Provincia'].'</td>';
      echo '<td width="200" align="center">'.
           $row_comuni['Regione'].'</td>';
      echo '<td width="200" align="center">'.
           $row_comuni['CF'].'</td>';
      echo '</tr>';

      $row_comuni = mysql_fetch_assoc($comuni);
   }

?>

<tr>
<td align="center" valign="middle" height="100" colspan="5">

   <form action="#" method="POST" name="navigazione">
<?php
   if ($page > 1) echo '<input name="primo"
        type="submit" id="primo" value="<< Prima Pagina">';
   if ($page > 1) echo '<input name="precedente"
        type="submit" id="precedente" value="< Pagina Precedente">';
   echo " Pagina $page di $last_page ";
   if ($page != $last_page) echo '<input name="successivo"
        type="submit" id="successivo" value="Pagina Successiva >">';
   if ($page != $last_page) echo '<input name="ultimo"
        type="submit" id="ultimo" value="Ultima Pagina >>">';

   echo '<input name="pagina" type="hidden" id="pagina"
        value="'.$page.'">';
   echo '<input name="valperpagina" type="hidden"
        id="valperpagina" value="'.$valxpage.'">';
?>
</form>

</td>
</tr>
</table>

</body>
</html>

<?php

   mysql_free_result($comuni);
   mysql_close($my_server);

?>

Dovete scusarmi per essere andato a capo in modo non ortodosso, causa la ristrettezza della pagina, ma sono sicuro che il senso di quello che ho voluto fare si capisca ugualmente, anche perché il vostro compito è quello di capire il codice e riproporlo, non certamente fare il copia ed incolla, così come ho spiegato tante altre volte.
Come faccio sempre recupero i dati degli argomenti nella prima parte della pagina, quindi ho effettuato la connessione alla base dati, processo che dovrebbe esservi familiare se avete seguito il mio corso sul linguaggio PHP. Eseguo la query ordinando i valori per comune e conto il numero complessivo dei record che mi servirà per calcolare il numero totale di pagine risultanti. Ricevendo i valori dai tasti submit, che poi è quello che l’utente ha scelto, procedo ad aumentare o diminuire il conteggio delle pagine che ci consentiranno di avanzare del numero esatto di record in modo da arrivare ai valori da presentare. Il resto del codice si preoccupa di iterare sui record da visualizzare e mostrarli formattati in una tabella, alla fine della quale inserisco i tasti ed il conteggio delle pagine.
Ovviamente tutto è migliorabile, questo approccio l’ho utilizzato solo per mostrare la base di questo procedimento che poi utilizzeremo tutte le volte ci sia la necessità di gestire liste di valori provenienti da un database MySQL.

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Published by
Giampaolo Rossi
Tags: MySQLSQL

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