Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    7

    Problema di impaginazione dopo interrogazione DB

    Salve a tutti, programmo in php da un pò, ma ancora non riesco a far funzionare l'impaginazione.
    Ho usato degli scipt d'impaginazione trovati sul fantastico sito html.it

    La select funziona perfettamente. La prima volta mi mostra correttamente i dati da 1 a 10 cliccando sul link successiva però non mi mostra cio che dovrebbe.

    Questo è il file paginazione_1.php

    <?php

    if($current_page == 1) { // se siamo nella prima pagina
    $precedente = "<< precedente";
    } else { // altrimenti
    $previous_page = ($current_page - 1);
    $precedente = "<a href=\"?page=$previous_page\" title=\"Vai alla pagina precedente\"><< precedente</a>";
    }

    if($current_page == $tot_pages) { // se siamo nell'ultima pagina
    $successiva = "successiva >>";
    } else { // altrimenti
    $next_page = ($current_page + 1);
    $successiva = "<a href=\"?page=$next_page\" title=\"Vai alla pagina successiva\">successiva >></a>";
    }
    $paginazione = "$precedente $successiva";

    ?>

    Mentre questo è il mio file che effettua una ricerca per lettera dell'alfabeto:

    <?php
    $utility = $_GET['lettera'];
    //file per la connessione al DB
    include ('conf.inc.php');

    // esecuzione prima query
    $count = mysql_query("SELECT COUNT(*) FROM $tab_riviste WHERE utility='$utility'");
    $res_count = mysql_fetch_row($count);

    // numero totale di records
    $tot_records = $res_count[0];

    // risultati per pagina(secondo parametro di LIMIT)
    $per_page = 10;

    // numero totale di pagine
    $tot_pages = ceil($tot_records / $per_page);

    // pagina corrente
    $current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];

    // primo parametro di LIMIT
    $primo = ($current_page - 1) * $per_page;

    $da = ($primo +1);
    $dove = ($per_page+$primo);

    <table>

    <TR>

    <TD VALIGN=top COLSPAN=3 WIDTH=602>



    Visualizza i record da $da a $dove

    di $tot_records record trovati</P>

    </TD>

    </TR>


    echo "<div align=\"center\">\n<table>\n";

    // esecuzione seconda query con LIMIT
    $query_limit = mysql_query("SELECT * FROM $tab_riviste WHERE utility='$utility' LIMIT $primo, $per_page");
    while($results = mysql_fetch_array($query_limit)) {
    $testata = $results['testata'];

    $posseduto = $results['posseduto'];

    $web = $results['web'];

    $posseduto_elettronico = $results['posseduto_elettronico'];

    $carta = $results['carta'];

    $online = $results['online'];

    $matricola = $results['matricola'];

    echo <<<EOD

    <TR>

    <TD COLSPAN=3 WIDTH=602>





    <UL>

    <LI>$testata

    EOD;

    }
    // includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
    include("paginazione_1.php");
    //include("paginazione_2.php");

    // in questa cella inseriamo la paginazione
    echo " <tr>\n <td height='50' valign='bottom' align=\"center\">$paginazione</td>\n";

    echo " </tr>\n</table>\n</div>";

    mysql_close($connessione);

    ?>

    Cosa cè di sbagliato???

    Qualcuno sarebbe così gentile da aiutarmi???


    Grazie a tutti.

    Vi saluto, ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    7
    Salve,
    continuando a studiare il programma ho riscontrato una cosa:

    L'impaginazione funziona correttamente se viene fatto su una select generica (senza clausola WHERE), infatti questo lo testato.

    Se invece uso lo stesso codice per una select con clausola WHERE, mi visualizza la prima pagina perfetta, mentre dopo non rivela alcunchè, Riferendomi sempre al codice sopra elencato, facendo una echo di $tot_records nella seconda pagina, mi dice che è uguale a 0.

    Potreste aiutarmi???

  3. #3

    Problema di impaginazione dopo interrogazione DB

    Ciao fortcar

    ho visto il tuo problema e anche io sono nelle stesse condizioni, cioè la prima pagina me la carica perfettamente, mentre le successive sono vuote, come se si "dimenticasse" il count delle pagine.

    Io ho provato ad inserire manualmente il numero di ID (Che nel mio caso proviene da un menu dinamico di selezione, ad esempio ID=55) nella prima query, quella del COUNT

    Codice PHP:
    DB_Connect();
    $categoria $_POST['Attivita_category'];

    $count mysql_query("SELECT COUNT(Attivita_ID) FROM $table9 WHERE $Attivita_category ='55'");
    $res_count mysql_fetch_row($count);

    $tot_records $res_count[0];// numero totale di records 
    In questo caso funziona tutto perfettamente fino all'ultima pagina.

    Se invece richiamo l'ID con POST (ma anche con GET) impagina la prima pagina poi basta.

    Ho la sensazione che il problema non sia qui ma nella riga che calcola la current_page.
    Codice PHP:
    // pagina corrente
    $current_page = (!$_GET['page']) ? : (int)$_GET['page']; 
    Per caso sei riuscito a risolvere il problema?

    Estendo a tutti la mia richiesta di aiuto.
    Mi sono fuso il cervello!

    Se avete bisogno che vi posti tutto il codice fatemelo sapere.

    Grazie infinite

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    7
    Ciao,
    purtroppo no, Non sono riuscito a risolvere il problema.

    Tu, hai per caso risolto??

    Fammi sapere, saluti.

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.