- Home
- Categorie
- Coding e Sistemistica
- Coding
- Problema paginazione
- 
							
							
							
							
							
Problema paginazioneCiao 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]