• User Newbie

    Problemi di paginazione

    Buongiorno a tutti voi del forum,
    ho creato un sito che girerà in locale quindi abbastanza semplice niente login ne sessioni è collegato ad un db mysql. Stranamente funziona tutto tranne l'impaginazione dei dati che funziona a metà mi spiego meglio come entro nel sito mi da errore che npn gli vengono passati i parametri della pagina ma navigando nelle varie pagine funziona tutto correttamente anche se ritorno alla pagina 1 posto il codice ```

    <?php $conn= mysql_connect("localhost", "root", "usbw");
    if (!$conn) { die("Connessione a Mysql non riuscita " . mysql_error()); }
    $db= mysql_select_db("tributi", $conn);
    if (!$db) { die("Connessione al Database non riuscita " . mysql_error()); }
    require_once('impaginazione.php');
    // acquisisco i valori di input
    $page = $_GET['page'];
    $limit = 20;
    $result = mysql_query("select count(*) from versamentidaposte");
    $total = mysql_result($result, 0, 0);
    // imposto i valori della class
    $pager = Pager::getPagerData($total, $limit, $page);
    $offset = $pager->offset;
    $limit = $pager->limit;
    $page = $pager->page;
    $Risultato= mysql_query ("select DISTINCT ID, Nominativo, CodFiscale, Tassa, Date(DataPagamento) as DataPagamento FROM versamentidaposte ORDER BY Nominativo limit $offset, $limit", $conn); mysql_close($conn); ?>
    <p align="center">
    <font size="5">
    <i><font face="Perpetua" color="#000000">Elenco Nominativi Pag.</font></i>
    <b><font size="6" face="Freestyle Script" color="#000000">#<?php echo $_GET['page']; ?></font></b></font></p>
    // output del sistema di impaginazione
    if ($page == 1) // questa è la prima pagina - non ci sono pagina precedenti
    echo "Precedente";
    else // non la prima pagina, crea il link alla pagina precedente
    echo "<a href="index.php?page=" . ($page - 1) . "">Precedente</a>";

    for ($i = 1; $i <= $pager->numPages; $i++) { 
          echo " ";   
        if ($i == $pager->page) 
            echo "$i"; 
        else 
            echo "<a href=\"index.php?page=$i\">$i</a>"; 
    } 
    
    if ($page == $pager->numPages) // ultima pagina - non ci sono pagine successive
        echo " Successiva"; 
    else            // non l'ultima pagina, crea il link alla pagina successiva
        echo "<a href=\"index.php?page=" . ($page + 1) . "\"> Successiva</a>";  
    
    impaginazione.php
    

    <?php class Pager {
    function getPagerData($numHits, $limit, $page)
    {
    $numHits = (int) $numHits;
    $limit = max((int) $limit, 1);
    $page = (int) $page;
    $numPages = ceil($numHits / $limit);
    $page = max($page, 1);
    $page = min($page, $numPages);
    $offset = ($page - 1) * $limit;
    $ret = new stdClass;
    $ret->offset = $offset;
    $ret->limit = $limit;
    $ret->numPages = $numPages;
    $ret->page = $page;
    return $ret; } } ?>

    
    Notice: Undefined index: page in C:\Documents and  Settings\costa\Desktop\ServerLocale\Root\ComuneGuarene\index.php on line  119
    Notice: Undefined index: page in C:\Documents and  Settings\costa\Desktop\ServerLocale\Root\ComuneGuarene\index.php on line  138
    
    In pratica per qllo ke ho capito all'inizio nn trova il valore page appena avvio la connessione ma  dopo si.:bho:
    Ho pensato di mettere un if quando acquisico i dati ma non riesco a capire che condizione impostare perchè comunque un controllo lo faccio nella classe.:?
    Qualcuno riesce a darmi un aiuto? Qrazie. :ciauz:

  • User Newbie

    Sono riuscita a risolvere posto il codice corretto così potrà essere utile a chiunque ne abbia bisogno:

    
    <?php $conn= mysql_connect("localhost", "root", "usbw"); 
        if (!$conn) 
        { die("Connessione a Mysql non riuscita " . mysql_error()); 
        } $db= mysql_select_db("tributi", $conn); 
        if (!$db) 
        { die("Connessione al Database non riuscita " . mysql_error()); 
        } 
    
        require_once('impaginazione.php');
        // acquisisco i valori di input
        if(isset($_GET['page'])){
    $page = $_GET['page'];
    }
    else{
    $page = 1;
    }
        $limit = 20; 
        $result = mysql_query("select count(*) from versamentidaposte"); 
        $total = mysql_result($result, 0, 0); 
        $pager = new Pager();
          // imposto i valori della class
        $pager  = Pager::getPagerData($total, $limit, $page); 
        $offset = $pager->offset; 
        $limit  = $pager->limit; 
        $page   = $pager->page; 
        
     $Risultato= mysql_query ("select DISTINCT ID, Nominativo, CodFiscale, Tassa, Date(DataPagamento) as DataPagamento FROM versamentidaposte ORDER BY Nominativo limit $offset, $limit", $conn); 
    
    mysql_close($conn);
     ?>       
               
    <p align="center">
    <font size="5">
    <i><font face="Perpetua" color="#000000">Elenco Nominativi Pag.</font></i>
    <b><font size="6" face="Freestyle Script" color="#000000">#<?php echo $page;?></font></b></font></p>                     
    
    ```naturalmente questo come scritto prima è abbinato ad una classe
    

    <?php
    class Pager
    {
    function getPagerData($numHits, $limit, $page)
    {
    $numHits = (int) $numHits;
    $limit = max((int) $limit, 1);
    $page = (int) $page;
    $numPages = ceil($numHits / $limit);

           $page = max($page, 1); 
           $page = min($page, $numPages); 
    
           $offset = ($page - 1) * $limit; 
    
           $ret = new stdClass; 
    
           $ret->offset   = $offset; 
           $ret->limit    = $limit; 
           $ret->numPages = $numPages; 
           $ret->page     = $page; 
    
           return $ret; 
       } 
    

    }
    ?>