- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema paginazione
-
Problema paginazione
Ciao a tutti, ho un problema con la paginazione dei risultati di un form....
Praticamente esegue la query e mi impagina tutti i dati trovati.
Quando cambio pagina però, riesegue la queri cambiando il LIMIT ma perdo anche alcune chiavi di ricerca quindi sfasa i risultati...
Come posso sistemare la situazione?
-
Ciao talkoman, credo sia difficile aiutarti se non ci fornisci il pezzo di script interessato o comunque qualche informazione in più.
Ma proviamo:
se perdi dei dati significa che forse ti potrebbe essere sfuggito di salvarli per il reinvio o, se questo è stato fatto, allora c'è qualche problema di assegnazione/altro da sistemare.E' un po' vaga come risposta, lo so, ma non conoscendo la struttura, come detto, è difficile essere più esaurienti
-
domani ti posto il codice...grazie!!
buona notte
-
Adesso non ricordo se php ha una funzione di url rebuild, ma non è complesso farla da te...
fai così$get = $_GET; $get['pagina'] = X[metti il numero della pagina successiva o precedente]; foreach($get as $k=>$v){ $qs[]="$k=$v"; } $querystring = '?'.implode("&", $qs); ```In questo modo hai una bella queristring da "attaccare" al link in html: esempio
<a href="prendidati.php<?=$querystring?>">pagina successiva</a>
Dovrebbe funzionare! Antonio--
-
allora questa la query per estrarre i dati:
[PHP]<?php
$righePerPag=20;
$pageNum = 1;
if(isset($_GET['page']))
$pageNum = $_GET['page'];
$offset = ($pageNum - 1) * $righePerPag;
$sql="SELECT * FROM artisti WHERE eliminato='n'";
if(isset($_POST['nome']))
$sql.=" AND nome LIKE '%".$_POST['nome']."%'";
else
unset($_POST['nome']);
$sql.=" ORDER BY cognome,nome LIMIT $offset, $righePerPag";
[/PHP]e questo sotto per la paginazione:
[PHP]<?php
$query = "SELECT COUNT(id) AS numrows FROM artisti WHERE eliminato='n'";
$result = mysql_query($query) or die('Errore, query fallita');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
$maxPage = ceil($numrows/$righePerPag);
$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> ";
}
if ($pageNum > 1){
$page = $pageNum - 1;
$prev = " <a href="$self?page=$page"><<</a>";
$first = " <a href="$self?page=1">Prima</a> ";
}else{
$prev = ' '; // se siamo nella 1° pag non mostriamo Prev
$first = ' '; // e neanche il link alla 1° pag
}
if ($pageNum < $maxPage){
$page = $pageNum + 1;
$next = " <a href="$self?page=$page">>></a> ";
$last = " <a href="$self?page=$maxPage">Ultima</a> ";
}else{
$next = ' '; // siamo nell' ultima pag, nn mostriamo Next
$last = ' '; // siamo nell' ultima pag, nn mostriamo il link Last
}
// mostra i links di navigazione
echo $first;
?></td>
<td width=60% align="center">
<?php
echo $prev . $nav . $next;
?>
</td>
<td width=20%>
<?php
echo $last;
?>[/PHP]