- Home
- Categorie
- Coding e Sistemistica
- Coding
- Paginazione php
- 
							
							
							
							
							
Paginazione phpSalve ragazzi, ho un problema con la paginazione, il codice attuale che funziona nelle mie pagine è il seguente: <?php $paginazione = "Pagine totali: " . "<strong>".$tot_pages . "</strong> <br /> 
 <br />
 ";
 for($i = 1; $i <= $tot_pages; $i++)
 {
 if($i == $current_page)
 {
 $paginazione .= "<strong>".$i . "</strong> ";
 }
 else {
 if($page < 10)
 {
 $uri=$_SERVER['REQUEST_URI'];
 $pagina=substr ($uri, -10, 10);
 if ($pagina!='index.html'){
 $uri2=substr_replace($uri, $i, -6, 1);
 $paginazione .= "<a href="$uri2" title="Vai alla pagina $i">$i</a> ";
 }
 else{
 $uri2=substr_replace($uri, $i, -12, 1);
 $paginazione .= "<a href="$uri2" title="Vai alla pagina $i">$i</a> ";
 }
 }
 else
 {
 $uri=$_SERVER['REQUEST_URI'];
 $pagina=substr ($uri, -10, 10);
 if ($pagina!='index.html'){
 $uri2=substr_replace($uri, $i, -7, 2);
 $paginazione .= "<a href="$uri2" title="Vai alla pagina $i">$i</a> ";
 }
 else{
 $uri2=substr_replace($uri, $i, -13, 2);
 $paginazione .= "<a href="$uri2" title="Vai alla pagina $i">$i</a> ";
 }
 }
 }
 }
 $paginazione .= "";
 ?>In pratica il risultato è 
 Pagine totali: 6
 1 2 3 4 5 6
 mentre il cliente mi chiede di avere una cosa del genere:
 ** Pagine totali(6): 1 **2 3 successive >>e quando si fa click su "successive >>" dovrebbe stampare una cosa tipo Pagine totali(6): << precedenti 2 3 4 successive >> fino ad arrivare all'ultima pagina ed ottenere questo Pagine totali(6): << precedenti 4 5 6 Come dovrei modificare il codice per ottenere il secondo esempio? 
 Grazie anticipatamente.
 
- 
							
							
							
							
							
Tutto tratto da precedente post. 
 Paginazione php,
 [PHP]<?php 
 // definiamo una costante per la pagina corrente
 define("SELF", $_SERVER['PHP_SELF']);
 // definiamo la classe
 class Paging
 {
 // definiamo la pagina di partenza
 function paginaIniziale($max_row)
 {
 if ((!isset($_GET['p'])) || ($_GET['p'] == "1"))
 {
 $parti_da = 0;
 $_GET['p'] = 1;
 }else{
 $parti_da = ($_GET['p']-1) * $max_row;
 }
 return $parti_da;
 }
 // contiamo le pagine e stabiliamo quanti records devono essere impaginati
 function contaPagine($conta, $max_row)
 {
 $pgg = (($conta % $max_row) == 0) ? $conta / $max_row : floor($conta / $max_row) + 1;
 return $pgg;
 }
 // mostriamo l'elenco delle pagine
 function listaPagine($p_corrente, $pgg)
 {
 $listapgg = "";
 //tolto per fareapparire semlpre prima
 // if (($p_corrente != 1) && ($p_corrente))
 //{
 $listapgg .= " <a href="".SELF."?p=1">Prima</a> ";
 // }
 if (($p_corrente-1) > 0)
 {
 $listapgg .= "<a href="".SELF."?p=".($p_corrente-1).""><</a> ";
 }
 for ($i=1; $i<=$pgg; $i++)
 {
 if ($i == $p_corrente)
 {
 $listapgg .= "<b>".$i."</b>";
 }else{
 $listapgg .= "<a href="".SELF."?p=".$i."">".$i."</a>";
 }
 $listapgg .= " ";
 }
 if (($p_corrente+1) <= $pgg)
 {
 $listapgg .= "<a href="".SELF."?p=".($p_corrente+1)."">></a> ";
 }
 //tolto per fareapparire semlpre ultima
 // if (($p_corrente != $pgg) && ($pgg != 0))
 //{
 $listapgg .= "<a href="".SELF."?p=".$pgg."">Ultima</a> ";
 //}
 $listapgg .= "</td>\n";
 return $listapgg;
 }
 // permettiamo la navigazione per pagine precedenti e successive
 function precedenteSuccessiva($p_corrente, $pgg)
 {
 $impaginazione = "";
 if (($p_corrente-1) <= 0)
 {
 $impaginazione .= "Precedente";
 }else{
 $impaginazione .= "<a href="".SELF."?p=".($p_corrente-1)."">Pag. precedente</a>";
 }
 $impaginazione .= " | ";
 if (($p_corrente+1) > $pgg)
 {
 $impaginazione .= "Prossima";
 }else{
 $impaginazione .= "<a href="".SELF."?p=".($p_corrente+1)."">Prossima pag.</a>";
 }
 return $impaginazione;
 }
 }
 ?>[/PHP] Pagina.php, 
 [PHP]<?php 
 //includiamo il file della classe
 @require("paginazione.php");
 //connettiamoci a MySQL e selezioniamo il database
 class MySQL
 {
 function MySQL()
 {
 $this->host_name = "localhost";
 $this->user_name = "root";
 $this->password = "";
 $this->data_name = "uno";
 $this->link = @mysql_connect($this->host_name, $this->user_name, $this->password) or die (mysq_error());
 @mysql_select_db($this->data_name) or die (mysq_error());
 }
 }
 $data = new MySQL();// istanziamo la classe per l'impaginazione 
 $p = new Paging;
 // numero massimo di risultati per pagina
 $max = 2;
 // identifichiamo la pagina da cui iniziare la numerazione
 $inizio = $p->paginaIniziale($max);
 // contiamo i records nel database
 $query_count = @mysql_query("SELECT * FROM articolo") or die (mysql_error());
 $count = @mysql_num_rows($query_count) or die (mysql_error());
 // troviamo il numero delle pagine che dovrà essere contato
 $pagine = $p->contaPagine($count, $max);
 // limitiamo la SELECT al numero di risultati per pagina
 $query = @mysql_query("SELECT * FROM articolo LIMIT ".$inizio.",".$max) or die (mysql_error());
 while($row = mysql_fetch_assoc($query)){
 $id=$row["id"];
 $nome=$row["nome"];
 echo ("
 <table border="1" width="200">
 <tr>
 <td width="126" align="center">$id</td>
 <td width="126" align="center">$nome</td>
 </tr>
 </table>
 ");} ?> 
 <link href="css.css" rel="stylesheet" type="text/css" /><table width="259" border="0" class="css"> 
 <tr>
 <td colspan="2" align="center"><?php $lista = $p->listaPagine($_GET['p'], $pagine);
 echo $lista . "<br>"; ?></td>
 </tr>
 </table>
 <p>
 <?php
 //mostriamo le pagine
 //$lista = $p->listaPagine($_GET['p'], $pagine);
 //echo $lista . "<br>";
 //mostriamo il navigatore Precedente/Successiva
 //$navigatore = $p->precedenteSuccessiva($_GET['p'], $pagine);
 //echo $navigatore;
 ?>[/PHP] 
 
- 
							
							
							
							
							
[..] Quindi sostituendo il mio codice con quello postato da te non funziona  
 Aiutoooooooooooooooooooooooooooo
 
- 
							
							
							
							
							
Guarda che manca la connessione nello script. 
 
- 
							
							
							
							
							
[..] 
 Mi potresti aiutare gentilmente?
 Oppure volendo lasciare il mio e aggiungendo quello che manca cosa dovrei fare?
 Grazie
 
- 
							
							
							
							
							
Questa e' la connessione: 
 [PHP]<?php 
 $host = 'localhost';
 $user = 'root';
 $password = '';
 $database = 'uno';
 $db = mysql_connect($host, $user, $password)
 or die ("Impossibile connettersi al server $host");
 mysql_select_db($database, $db)
 or die ("Impossibile connettersi al database $database");
 ?>[/PHP] 
 
- 
							
							
							
							
							
Ciao patatrac, la cosa che non capisco è che nel codice che ho attualmente non devo mettere i dati relativi a 
 $host = 'localhost';
 $user = 'root';
 $password = '';
 $database = 'uno'
 ma funziona ugualmente, il secondo problema sono i link
 che lo script che mi consigli mi genera, vorrei lasciare quelli attuali che sono tipo:
 /tipologia-2.html
 /tipologia-3.html
 /tipologia-4.html
 /tipologia-5.html
 Ora per semplificarew il tutto ci sarebbe la possibilità di modificare il mio per avere lo stesso risultato.
 Grazie per l'aiuto dato.