|
In questo tutorial vedremo il codice PHP che permette di
fare una query al database per prelevare dati, di scegliere quante righe del database visualizzare per pagina, e come fare la navigazioen
tra le pagine create.
Preliminari:
Partirò dal presupposto che abbiate un database nel quale avete creato una tabella come la seguente:
$query = 'CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
username VARCHAR(30) NOT NULL,
password VARCHAR(20) NOT NULL,
email VARCHAR(40) NOT NULL)';
Quindi creata la tabella nel database il codice per raggiungere quanto ci si era prefissati è:
Il codice:
<?php
// Connessione al database.
$dbhost='';
$dbusername='';
$dbuserpass='';
$dbname='';
// Connessione al database
mysql_connect ($dbhost, $dbusername, $dbuserpass);
if (!mysql_select_db($dbname)) die(mysql_error());
echo "<h2>Visualizza record</h2>";
$rowsPerPage = 2; // Righe per pagina
$pageNum = 1; // Pagina iniziale di default
// Settaggio pagina corrente
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
// determinazione offset
$offset = ($pageNum - 1) * $rowsPerPage;
$query = " SELECT id,username,email FROM users " .
" ORDER BY id LIMIT $offset, $rowsPerPage";
$result = mysql_query($query) or die('Error, query failed');
echo "<table border=1>
<tr><td>ID</td><td>Name</td>
<td>Email</td></tr>";
// Visualizzo le informazioni
while($row = mysql_fetch_array($result))
{
echo "<tr><td>".$row['id']."</td><td>
".$row['username']."</td>
<td>".$row['email']."</td></tr>";
}
echo "</table>";
$query = "SELECT COUNT(id) AS numrows FROM users";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
// numero di pagine
$maxPage = ceil($numrows/$rowsPerPage);
$self = $_SERVER['PHP_SELF'];
$nav = '';
for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nav .= " $page ";
}
else
{
$nav .= " <a href=\"$self?page=$page\">$page</a> ";
}
}
//creazione dei link next e prev
// e il link per andare direttamente in ultima pagina
if ($pageNum > 1)
{
$page = $pageNum - 1;
$prev = " <a href=\"$self?page=$page\">[Prev]</a> ";
$first = " <a href=\"$self?page=1\">[First Page]</a> ";
}
else
{
$prev = ' ';
$first = ' ';
}
if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$next = " <a href=\"$self?page=$page\">[Next]</a> ";
$last = " <a href=\"$self?page=$maxPage\">[Last Page]</a> ";
}
else
{
$next = ' ';
$last = ' ';
}
//Stampa i link di navigazione
echo $first . $prev . $nav . $next . $last;
?>
Spiegazione algoritmo di funzionamento
Leggendo i commenti nel codice il funzionamento dovrebbe essere abbastanza chiaro.
Lasciando le impostazioni di default, vengono visualizzate due righe per pagina e la barretta di navigazione.
|