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.
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→