Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    71

    impaginazione e order by

    ciao a tutti, spero mi riusciate a delucidare su un mio piccolo problema. In pratica non riesco ad impaginare i risultati della query in modo decrescente.
    Se inserisco order by id desc nella query questo mi restituisce i record in modo decrescente ma solo della pagina corrente, quindi se io ad esempio ho 30 record divisi per risultati di 10 per pagina mi restituisce ad esempio gli id così 10 9 8 7 6 5 4 3 2 1.
    io invece voglio che l'ordine sia decrescente dall'ultimo record al primo e che quindi ncella pagina 1 i risultati partano da 30 e vadano in modo decrescente verso il primo record che si troverá in pagina 3.

    vi posto il codice che sto utilizzando per l'impaginazione (questo è quello originale preso dal web che sto modificando in base alle mie esigenze)

    // connessione al database
    include('connect-db.php');

    // numero di risultati da visualizzare per pagina
    $per_page = 3;

    // calcola le pagine totali
    $result = mysql_query("SELECT * FROM players");
    $total_results = mysql_num_rows($result);
    $total_pages = ceil($total_results / $per_page);

    // controlla se la variabile 'page' è impostata nell'URL (es: view-paginated.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='view.php'>Visualizza Tutto</a> | <b>Visualizza impaginato:</b> ";
    for ($i = 1; $i <= $total_pages; $i++)
    {
    echo "<a href='view-paginated.php?page=$i'>$i</a> ";
    }
    echo "</p>";

    // visualizza i dati in tabella
    echo "<table border='1' cellpadding='10'>";
    echo "<tr> <th>ID</th> <th>Nome</th> <th>Cognome</th> <th></th> <th></th></tr>";

    // loop tra i risultati della query del database, visualizzandoli in tabella
    for ($i = $start; $i < $end; $i++)
    {
    // 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>' . mysql_result($result, $i, 'id') . '</td>';
    echo '<td>' . mysql_result($result, $i, 'firstname') . '</td>';
    echo '<td>' . mysql_result($result, $i, 'lastname') . '</td>';
    echo '<td><a href="edit.php?id=' . mysql_result($result, $i, 'id') . '">Edit</a></td>';
    echo '<td><a href="delete.php?id=' . mysql_result($result, $i, 'id') . '">Delete</a></td>';
    echo "</tr>";
    }
    // chiude la tabella>
    echo "</table>";

    Grazie mille a chi mi aiuterà

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    sbagli approccio.

    - utilizza mysqli o meglio ancora pdo per l'accesso ai dati
    - la paginazione la devi applicare alla query e non all'intero recordset. anche perchè come fai tu, in caso di un milione di record, li estrai tutti e poi ne prendi solo 10. non ha molto senso

    Quindi la query deve essere

    codice:
    SELECT * FROM tua_tabelle ORDER BY tuo_campo LIMIT $inizio,$fine
    molto pseudo codice

    ps. usa il tag code la prossima volta per il codice
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    71
    grazie mille ci provo, mi sa che ho capito dov'è il problema

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.