dividere risultati in pagine MySqli

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
Salve a tutti,
Ho un vecchio script che ho cercato alla buona di modificare in Mysqli
PHP:
// Variabili del Database
$server = 'localhost';
$user = 'user';
$pass = 'password';
$db = 'tabella';
 
// Connessione al Database
$connection = mysqli_connect($server, $user, $pass, $db)
or die ("Non connesso ... \n" . mysqli_error ());

 
        // numero di risultati da visualizzare per pagina
        $per_page = 3;
 
        // calcola le pagine totali
        $result = mysqli_query($connection, "SELECT * FROM news");
        $total_results = mysqli_num_rows($result);
        $total_pages = ceil($total_results / $per_page);
 
        // controlla se la variabile 'page' è impostata nell'URL (es: vedi-pag.php?page=1)
        if (isset($_GET['page']) && is_numeric($_GET['page']))
        {
                $show_page = $_GET['page'];
 
                // mi assicuro che il valore di $show_page sia valido
                if ($show_page > 0 && $show_page <= $total_pages)
                {
                        $start = ($show_page -1) * $per_page;
                        $end = $start + $per_page;
                }
                else
                {
                        // errore - mostra il primo set di risultati
                        $start = 0;
                        $end = $per_page;
                }
        }
        else
        {
                // se la pagina non è impostata, mostra il primo set di risultati
                $start = 0;
                $end = $per_page;
        }
 
        // visualizza impaginazione
 
        echo "<p><a href='vedi.php'>Visualizza Tutto</a> | <b>Visualizza impaginato:</b> ";
        for ($i = 1; $i <= $total_pages; $i++)
        {
                echo "<a href='vedi-pag.php?page=$i'>$i</a> ";
        }
        echo "</p>"; 
      // visualizza i dati in tabella
        echo "<table border='1' cellpadding='10'>";
        echo "<tr> <th>ID</th> <th>Titolo</th><th>News</th> <th>Autore</th><th>Quando</th> <th></th> <th></th></tr>";
 
        // loop tra i risultati della query del database, visualizzandoli in tabella
        for ($i = $start; $i < $end; $i++)
        {
			if($result){
    while($row = mysqli_fetch_assoc($result) ){
        // do your stuff
    $quando = new DateTime($row['quando']);

                // mi assicuro che PHP non cerchi di mostrare risultati che non esistono
               // if ($i == $total_results) { break; }
 
                // emissione del contenuto di ogni riga in una tabella
                echo "<tr>";
                echo '<td>' . $row['ID'] . '</td>';
                echo '<td>' . $row['titolo'] . '</td>';
                echo '<td>' . $row['testo'] . '</td>';
				echo '<td>' . $row['chi'] . '</td>';
				echo '<td>' . $quando->format('d/m/Y') . '</td>';
                echo '<td><a href="modifica.php?ID=' . $row['ID'] . '" ><img src="img/mod.jpg" title="Modifica '.$row['titolo'].'"  width="49" height="47"></a></td>';
                echo '<td><a href="cancella.php?ID=' . $row['ID'] . '"><img src="img/canc.jpg" title="Cancella '.$row['titolo'].' ATTENZIONE: la cancellazione e IRREVERSIBILE!!!" width="39" height="39"></a></td>';
                echo "</tr>";
        }}}
        // chiude la tabella>
        echo "</table>";
 
        // impaginazione

Bene questo script mi fa vedere tutti i risultati solo la divisione dei link delle pagine funziona
PHP:
 echo "<p><a href='vedi.php'>Visualizza Tutto</a> | <b>Visualizza impaginato:</b> ";
        for ($i = 1; $i <= $total_pages; $i++)
        {
                echo "<a href='vedi-pag.php?page=$i'>$i</a> ";
        }
        echo "</p>";

dove sbaglio?
 
Ultima modifica:
Ciao, prima di visualizzare i risultati devi ripetere la query usando il LIMIT e il parametro $start che hai creato
PHP:
$query = "SELECT * FROM news LIMIT $start , $per_page";
$result = mysqli_query($connection, $query);
 
Ciao, prima di visualizzare i risultati devi ripetere la query usando il LIMIT e il parametro $start che hai creato
PHP:
$query = "SELECT * FROM news LIMIT $start , $per_page";
$result = mysqli_query($connection, $query);

Grazie mille criric, ora funziona perfettamente!!!


Lo sapevo che era una "cavolata" e che dimenticavo qualcosa.
 
OK mi sono dimenticato una cosa.

Ora posso aggiungere dopo il LIMIT ORDER BY DESC??

Per far si che parte dall'ultimo record fino ad arrivare al primo, per intenderci.
 
Ok mi sono risposto da solo ahahahahahahah

PHP:
$query = "SELECT * FROM news ORDER BY ID DESC LIMIT $start , $per_page";
$result = mysqli_query($dbc, $query);
 

Discussioni simili