Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Problema con paging

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245

    Problema con paging

    Ciao a tutti,
    ho un problema con un paging. Ecco il codice:

    If (is_numeric($SubCategoryID)):
    /* Numero totale dei records restituiti dalla query */
    $Count = mysql_query("SELECT COUNT(id) FROM ricette
    WHERE SubCategoryID = $SubCategoryID");
    $res_count = mysql_fetch_row($Count);
    echo "Records = " . $Records = $res_count[0] . "
    ";

    /* Numero degli Items che vogliamo per pagina */
    $ItemsPage = 7;

    /* Numero totale delle pagine: floor arrotonda le frazioni all'intero inferiore;
    Pagine totali che avremo = il numero di Items fratto il numero di Items per pagina */
    $Pages = floor($Records/$ItemsPage);
    echo "Pages = " .$Pages . "
    ";

    /* Pagina corrente */
    $Current_Page = (!$_GET["Page"]) ? 1 : (int)$_GET["Page"];

    if (!isset($Page)) {
    $Page = 1;
    }

    echo "Current Page = " . $Current_Page . "
    ";

    /* Primo elemento da inserire nella pagina */
    $First_Element = ($Current_Page) * $ItemsPage;

    if ($Page == 1) {
    $First_Element = 1;
    }

    /* Query per le SubCategory */
    $SubCatQuery = "SELECT * FROM ricette
    WHERE SubCategoryID = $SubCategoryID
    ORDER BY titolo
    LIMIT $First_Element, $ItemsPage";
    echo $SubCatQuery . "
    ";
    $SubCatBodyResult = mysql_query ($SubCatQuery,$db);
    EndIf;
    ?>

    Come risultato non ottengo gli ultimi 7 risultati: ad esempio ho una SubCategory che contiene 14 records ma ne vengono visualizzati solo 7 (così come con 35 records ne vengono visualizzati 28). Qualcuno può aiutarmi?

    Grazie.
    L.

  2. #2
    Se ho capito il problema non ti visualizza il numero di pagine corrette?! Cmq devi usare ceil, non floor. Devi approssimare per eccesso non per difetto. Anche se 14/7 dovrebbe farti visualizzare tutte le pagine...cmq prova così
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Ho già provato sia con ceil che con round, ma niente. Il paging risulta corretto, ma sono i records ad avere problemi. Provo a spiegarmi meglio: se i records totali che la query mi da sono 14, vengono visualizzati solo i primi 7.

    La query cambia cosi:

    SELECT * FROM ricette WHERE SubCategoryID = 4 ORDER BY titolo LIMIT 0, 7 (e questa funziona)

    SELECT * FROM ricette WHERE SubCategoryID = 4 ORDER BY titolo LIMIT 14, 7

    E questa non funziona così: però ho provato ora ad invertire il 14 ed il 7 nella LIMIT e funziona.

    Ma non riesco a capire perchè!

    Qualche idea?

  4. #4
    c'è un errore nel limit.
    Il primo numero indica da dove parte la selezione, e il secondo quanto è lunga.
    La seconda query deve avere quindi come limit 7,7 non 14,7
    Per questo non ti visualizza nulla e invertendo invece funziona!

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Grazie matteosister.
    Ho cambiato questo pezzo:

    $First_Element = (($Current_Page) * $ItemsPage);

    in

    $First_Element = ($Current_Page * $ItemsPage) - 7;

    e funziona!

    Grazie 1000, stavo veramente impazzendo.

    Ciao!
    L.

  6. #6

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 © 2024 vBulletin Solutions, Inc. All rights reserved.