- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problemi di paginazione
-
Problemi di paginazione
Buongiorno a tutti voi del forum,
ho creato un sito che girerà in locale quindi abbastanza semplice niente login ne sessioni è collegato ad un db mysql. Stranamente funziona tutto tranne l'impaginazione dei dati che funziona a metà mi spiego meglio come entro nel sito mi da errore che npn gli vengono passati i parametri della pagina ma navigando nelle varie pagine funziona tutto correttamente anche se ritorno alla pagina 1 posto il codice ```<?php $conn= mysql_connect("localhost", "root", "usbw");
if (!$conn) { die("Connessione a Mysql non riuscita " . mysql_error()); }
$db= mysql_select_db("tributi", $conn);
if (!$db) { die("Connessione al Database non riuscita " . mysql_error()); }
require_once('impaginazione.php');
// acquisisco i valori di input
$page = $_GET['page'];
$limit = 20;
$result = mysql_query("select count(*) from versamentidaposte");
$total = mysql_result($result, 0, 0);
// imposto i valori della class
$pager = Pager::getPagerData($total, $limit, $page);
$offset = $pager->offset;
$limit = $pager->limit;
$page = $pager->page;
$Risultato= mysql_query ("select DISTINCT ID, Nominativo, CodFiscale, Tassa, Date(DataPagamento) as DataPagamento FROM versamentidaposte ORDER BY Nominativo limit $offset, $limit", $conn); mysql_close($conn); ?>
<p align="center">
<font size="5">
<i><font face="Perpetua" color="#000000">Elenco Nominativi Pag.</font></i>
<b><font size="6" face="Freestyle Script" color="#000000">#<?php echo $_GET['page']; ?></font></b></font></p>
// output del sistema di impaginazione
if ($page == 1) // questa è la prima pagina - non ci sono pagina precedenti
echo "Precedente";
else // non la prima pagina, crea il link alla pagina precedente
echo "<a href="index.php?page=" . ($page - 1) . "">Precedente</a>";for ($i = 1; $i <= $pager->numPages; $i++) { echo " "; if ($i == $pager->page) echo "$i"; else echo "<a href=\"index.php?page=$i\">$i</a>"; } if ($page == $pager->numPages) // ultima pagina - non ci sono pagine successive echo " Successiva"; else // non l'ultima pagina, crea il link alla pagina successiva echo "<a href=\"index.php?page=" . ($page + 1) . "\"> Successiva</a>";
impaginazione.php
<?php class Pager {
function getPagerData($numHits, $limit, $page)
{
$numHits = (int) $numHits;
$limit = max((int) $limit, 1);
$page = (int) $page;
$numPages = ceil($numHits / $limit);
$page = max($page, 1);
$page = min($page, $numPages);
$offset = ($page - 1) * $limit;
$ret = new stdClass;
$ret->offset = $offset;
$ret->limit = $limit;
$ret->numPages = $numPages;
$ret->page = $page;
return $ret; } } ?>Notice: Undefined index: page in C:\Documents and Settings\costa\Desktop\ServerLocale\Root\ComuneGuarene\index.php on line 119 Notice: Undefined index: page in C:\Documents and Settings\costa\Desktop\ServerLocale\Root\ComuneGuarene\index.php on line 138 In pratica per qllo ke ho capito all'inizio nn trova il valore page appena avvio la connessione ma dopo si.:bho: Ho pensato di mettere un if quando acquisico i dati ma non riesco a capire che condizione impostare perchè comunque un controllo lo faccio nella classe.:? Qualcuno riesce a darmi un aiuto? Qrazie. :ciauz:
-
Sono riuscita a risolvere posto il codice corretto così potrà essere utile a chiunque ne abbia bisogno:
<?php $conn= mysql_connect("localhost", "root", "usbw"); if (!$conn) { die("Connessione a Mysql non riuscita " . mysql_error()); } $db= mysql_select_db("tributi", $conn); if (!$db) { die("Connessione al Database non riuscita " . mysql_error()); } require_once('impaginazione.php'); // acquisisco i valori di input if(isset($_GET['page'])){ $page = $_GET['page']; } else{ $page = 1; } $limit = 20; $result = mysql_query("select count(*) from versamentidaposte"); $total = mysql_result($result, 0, 0); $pager = new Pager(); // imposto i valori della class $pager = Pager::getPagerData($total, $limit, $page); $offset = $pager->offset; $limit = $pager->limit; $page = $pager->page; $Risultato= mysql_query ("select DISTINCT ID, Nominativo, CodFiscale, Tassa, Date(DataPagamento) as DataPagamento FROM versamentidaposte ORDER BY Nominativo limit $offset, $limit", $conn); mysql_close($conn); ?> <p align="center"> <font size="5"> <i><font face="Perpetua" color="#000000">Elenco Nominativi Pag.</font></i> <b><font size="6" face="Freestyle Script" color="#000000">#<?php echo $page;?></font></b></font></p> ```naturalmente questo come scritto prima è abbinato ad una classe
<?php
class Pager
{
function getPagerData($numHits, $limit, $page)
{
$numHits = (int) $numHits;
$limit = max((int) $limit, 1);
$page = (int) $page;
$numPages = ceil($numHits / $limit);$page = max($page, 1); $page = min($page, $numPages); $offset = ($page - 1) * $limit; $ret = new stdClass; $ret->offset = $offset; $ret->limit = $limit; $ret->numPages = $numPages; $ret->page = $page; return $ret; }
}
?>