Paginazione

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ho modificato e usato così tante volte questo script che non ricordo dove ho preso il codice originale
Non me ne voglia l'autore

Ho usato la solita tabella 'listacomuni' per questo esempio

paginazione.php
PHP:
// connessione al db
$conn = mysql_connect('localhost', 'root', '', 'criric');
$db = mysql_select_db('criric', $conn);

// imposto il limite di risultati per pagina
$limite_pag = 20;

// verifico che sia settata la pagina da visualizzare
if (isset($_GET['num_pag'])) {
    $num_pag = $_GET['num_pag'];
} else {
// altrimenti setto la prima pagina
    $num_pag = 1;
}

// imposto il limite minimo da usare nella query
if ($num_pag <= 1) {
    $limite_min = 0;
} else {
    $limite_min = ($num_pag - 1) * $limite_pag;
}

// imposto il limite massimo sul quale finirà la ricerca
$limite_max = $limite_min + $limite_pag;

// interrogo il database per recuperare il numero totale di record
$query = "SELECT * FROM listacomuni";
$res = mysql_query($query, $conn);
$totali = mysql_num_rows($res);

// interrogo il database per recuperare la lista dei record fornendo limite minimo e limite per pagina
$query = "SELECT * FROM listacomuni LIMIT $limite_min,$limite_pag";
$res = mysql_query($query, $conn);

// se il limite massimo supera i record totali lo fermo al numero di record totali
if ($totali <= $limite_max) {
    $limite_max = $totali;
}

// informo sulla ricerca
echo"da ";
echo $limite_min + 1;
echo" a $limite_max risultati su $totali";
echo"<br/><br/>";

// recupero il numero di pagine totali
$pagine = ceil($totali / $limite_pag);

// creo dei pulsanti per andare avanti e indietro nelle pagine
// pulsante indietro
$indietro = $num_pag - 1;
echo " <input ";
if ($num_pag <= 1)
    echo "disabled = 'disabled'";
// da cambiare la destinazione della location
echo "class='min' type='button' onclick='javascript:location.href=\"paginazione.php?pag&num_pag=$indietro\"' value='<'/>&nbsp;";
$avanti = $num_pag + 1;

// select con il numero di pagine
// da cambiare la destinazione della location
echo "<select onchange='javascript:location.href=\"paginazione.php?num_pag=\"+this.value+\"\"'>\n";
for ($i = 1; $i <= $pagine; $i++) {
    echo "<option value='$i' ";
    if ($i == $num_pag)
        echo "selected='selected'";
    echo ">$i</option>\n";
}
echo "</select>";

// pulsante avanti
echo "&nbsp;<input ";
if ($num_pag >= $pagine)
    echo "disabled = 'disabled'";
// da cambiare la destinazione della location
echo "class='min' type='button' onclick='javascript:location.href=\"paginazione.php?num_pag=$avanti\"' value='>'/>";

echo "&nbsp;&nbsp;Totale pagine $pagine";

echo"<br/><br/>";

// stampo i risultati
for ($i = 0; $i < mysql_num_rows($res); $i++) {
    $comune = mysql_result($res, $i, 'comune');
    echo $comune . "<br/>";
}
if(mysql_num_rows($res) == 0) {
    echo "Nessun risultato";
}

è sufficente impostare i propri parametri di connessione e la propria tabella per vederne il risultato

poche righe di codice e risultato più che sufficente
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Non è stato difficile
ecco qua
PHP:
<?php

// connessione al db
$sql = new mysqli("localhost", "user", "password", "database");

// imposto il limite di risultati per pagina
$limite_pag = 20;

// verifico che sia settata la pagina da visualizzare
if (isset($_GET['num_pag'])) {
    $num_pag = $_GET['num_pag'];
} else {
// altrimenti setto la prima pagina
    $num_pag = 1;
}

// imposto il limite minimo da usare nella query
if ($num_pag <= 1) {
    $limite_min = 0;
} else {
    $limite_min = ($num_pag - 1) * $limite_pag;
}

// imposto il limite massimo sul quale finirà la ricerca
$limite_max = $limite_min + $limite_pag;

// interrogo il database per recuperare il numero totale di record
$query = "SELECT nome FROM comuni";
$res= $sql->query($query);
$totali = $res->num_rows;

// interrogo il database per recuperare la lista dei record fornendo limite minimo e limite per pagina
$query = "SELECT nome FROM comuni LIMIT $limite_min,$limite_pag";
$res = $sql->query($query);

// se il limite massimo supera i record totali lo fermo al numero di record totali
if ($totali <= $limite_max) {
    $limite_max = $totali;
}

// informo sulla ricerca
echo"da ";
echo $limite_min + 1;
echo" a $limite_max risultati su $totali";
echo"<br/><br/>";

// recupero il numero di pagine totali
$pagine = ceil($totali / $limite_pag);

// creo dei pulsanti per andare avanti e indietro nelle pagine
// pulsante indietro
$indietro = $num_pag - 1;
echo " <input ";
if ($num_pag <= 1)
    echo "disabled = 'disabled'";
// da cambiare la destinazione della location
echo "class='min' type='button' onclick='javascript:location.href=\"paginazione.php?pag&num_pag=$indietro\"' value='<'/>&nbsp;";
$avanti = $num_pag + 1;

// select con il numero di pagine
// da cambiare la destinazione della location
echo "<select onchange='javascript:location.href=\"paginazione.php?num_pag=\"+this.value+\"\"'>\n";
for ($i = 1; $i <= $pagine; $i++) {
    echo "<option value='$i' ";
    if ($i == $num_pag)
        echo "selected='selected'";
    echo ">$i</option>\n";
}
echo "</select>";

// pulsante avanti
echo "&nbsp;<input ";
if ($num_pag >= $pagine)
    echo "disabled = 'disabled'";
// da cambiare la destinazione della location
echo "class='min' type='button' onclick='javascript:location.href=\"paginazione.php?num_pag=$avanti\"' value='>'/>";

echo "&nbsp;&nbsp;Totale pagine $pagine";

echo"<br/><br/>";

// stampo i risultati
while ($row = $res->fetch_array(MYSQLI_ASSOC)) {
    echo $row['nome'] . "<br/>";
}
if ($res->num_rows == 0) {
    echo "Nessun risultato";
}
?>
non l'ho testato con la tabella che hai indicato ma dovrebbe funzonare
 
Discussioni simili
Autore Titolo Forum Risposte Data
I Errore 80040220 nella newsletter con paginazione Classic ASP 0
motleyrulez Paginazione Tabella Bootstrap Javascript 2
B [Java] Paginazione in risposta HTTP Java 0
L [PHP] paginazione con classi vendor PHP 2
K [PHP] Paginazione Wordpress: passare variabile PHP 6
A [PHP] If e Else paginazione ok ci sono risultati no ma avanti lo stesso PHP 15
paloppa [PHP] paginazione con ajax PHP 1
O paginazione php mysql PHP 10
A [PHP] limitare counter paginazione PHP 7
V [ASP] paginazione-risultati-query-grandi-dimensioni Classic ASP 8
A [PHP] Problema paginazione motore di ricerca PHP 48
A [PHP] inserire paginazione su script php/mysql PHP 6
Marcello.Fiore Paginazione jQuery - PHP jQuery 2
elpirata [PHP] Paginazione dati estratti da una query con più condizioni PHP 17
X come modificare paginazione del tutorial PHP 0
MarcoGrazia Problema con bootstrap, saltata tutta la paginazione in IE8 HTML e CSS 1
F paginazione record di una query Classic ASP 5
Luca13 ASP Easy-News paginazione Classic ASP 2
G Problema di Indice e Paginazione PHP 5
L articolo: Paginazione dei dati presenti in un file di testo - informazioni PHP 2
M Paginazione di risultati query mysql PHP 2
D Paginazione dati PDO PHP 8
zorro Help paginazione PHP 10
M Problema su numerazione paginazione php PHP 6
D [risolto] Problemi di paginazione dei risultati con una determinata query Classic ASP 4
L paginazione testo senza troncare le parole PHP 3
L testare una paginazione "Creazione di 1000 dati random in una tabella" PHP 7
L problema paginazione con valori -1 -2 -3 -4 PHP 0
N Paginazione con invio modulo PHP 0
L Paginazione file di testo PHP 3
N Script paginazione PHP 0
N Paginazione PHP 2
felino Pagina di ricerca: la paginazione non funziona WordPress 0
xone Evitare Meta Tag duplicati su paginazione php PHP 2
filippino Paginazione file txt con PHP? PHP 1
felino PHP e Paginazione Jquey PHP 2
H [RISOLTO] paginazione PHP + mysql PHP 15
M Problema Paginazione con Mod_rewrite .htaccess PHP 0
J Paginazione PHP in jQuery UI Tabs jQuery 13
ste80 interazione PHP Access con paginazione PHP 7
W Problema eliminazione ultimo record da ultima pagina di crud con paginazione PHP 2
L Paginazione con pdo. PHP 8
G Paginazione php utilizzando le api di careerjet PHP 0
G Paginazione php utilizzando le api di careerjet WordPress 1
S paginazione PHP 2
L Paginazione file evitare di inserire questi \ o altro nella get PHP 1
K problemi con paginazione tabella PHP 7
L Creare paginazione numerica PHP 3
L Problema paginazione che ripete i dati doppi PHP 1
L Paginazione elenco File da una cartella PHP 11

Discussioni simili