• Bannato User Attivo

    dividere in pagine i risultati

    In pratica ho questo codice che mostra le informazioni di ogni singolo utente e le mostra su ogni riga:

    [PHP] for($i=0;$i<$c1;$i++)
    {
    //show each user
    $each = def($users*, "./db/users");

        echo "$each[id]-$each[email]";
    

    }[/PHP]

    Il problema è che però tutto questo mi viene mostrato solo su una singola pagina, e potete immaginare come su 1400 risultati, un qualsiasi browser possa andare in crash.

    Come si fa a dividerle in pagine dove ogni pagina ne contiene solo 50 e cosi via?

    Del tipo view.php?pagina=2 e vedo gli altri 50 ecc.....

    Per quanto riguarda l'input cioè le caselle dei messaggi per girare pagina ce l'ho già, ma è il sistema che divide i risultati che mi manca.

    Ciao 😉


  • Super User

    Ciao alessiofbt,
    $c1 è un'array con tutti i risultati giusto?
    Prova questo ma nn sono sicuro del funzionamento ;):
    [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;
    }
    }
    $page = $_GET['page'];
    $limit = 50;
    $total = count($c1);
    $pager = Pager::getPagerData($total, $limit, $page);
    $offset = $pager->offset;
    $limit = $pager->limit;
    $page = $pager->page;
    for($i=0;$limit<$c1>$offset;$i++)
    {

        $each = def($users*, "./db/users"); 
     
    
     
        echo "$each[id]-$each[email]"; 
    

    }

    if ($page == 1)
        echo "Precedenti"; 
    else
        echo "<a href=\"pagina.php?page=" . ($page - 1) . "\">Precedente</a>";
    

    for ($i = 1; $i <= $pager->numPages; $i++) {
    echo " | ";
    if ($i == $pager->page)
    echo "Page $i";
    else
    echo "<a href="pagina.php?page=$i">Page $i</a>";
    }
    if ($page == $pager->numPages)
    echo "Prossime";
    echo "<a href="pagina.php?page=" . ($page + 1) . "">Prossima</a>";
    ?>

    [/php]

    Fonte: http://www.phpnoise.com/tutorials/9/1 :D:D


  • Bannato User Attivo

    Mi da questo errore

    Parse error: syntax error, unexpected '>'

    alla riga dove c'è

    for($i=0;$limit<$c1>$offset;$i++)

    ?


  • Bannato User Attivo

    up


  • Bannato User Attivo

    up


  • User Attivo

    prova questo

    $_utenti_query_n = mysql_query("SELECT COUNT(id) FROM $tb_gst_user");//conto i records
    $_utenti_query = mysql_fetch_array($_utenti_query_n);
    $_utenti_n = $_utenti_query[0];//prendo il risultato

    $_utenti_p_p = 50;//num records da visualizzare

    $_utenti_p = htmlspecialchars($_GET['pg']);
    if(ereg("[0-9]",$_utenti_p)==false or $_utenti_p >= $_utenti_n or $_utenti_p < 0)
    {
        $_utenti_p = 0;
    }
    
    $_utenti_query = mysql_query("SELECT * FROM $tb_gst_user ORDER BY nome LIMIT $_utenti_p, $_utenti_p_p");
    
    • o - questo lo fatto al momento, sul sito c'è molto migliore
      html.it, c'è uno script molto migliore

  • User

    Salve ragazzi,
    pensavo di aver risolto il problema dell'impaginazione dei risultati ma ora che sto inserendo i dati mi accorgo di una cosa, _cioè che se io adesso faccio una ricerca con un valore (ad esempio provincia Chieti) _mi dice si quanti risultati ci sono e in quante pagine me li divide (2) e mi fa vedere i primi 5 ma se clicco sulla seconda pagina non mi fa vedere la seconda parte ma mi fa vedere la seconda pagina come se cercassi con parametro (provincia :all).

    Posto il codice:

    
    <?php 
                include("include/connector.inc"); 
                $ricerca = $_POST['ricerca']; 
                 
                if($ricerca=="vero"){ 
                $localita = strtolower($_POST['localita']); 
                $citta = strtolower($_POST['citta']); 
                $regione = strtolower($_POST['regione']); 
                $stato = strtolower($_POST['stato']); 
                 
                $cs = $_POST['CS']; 
                $aa = $_POST['AA']; 
                $ps = $_POST['PS']; 
                $camper_stop = $_POST['CAMPER-STOP']; 
                $wifi = $_POST['WI-FI']; 
                $gratis = $_POST['GRATIS']; 
                $pagamento = $_POST['PAGAMENTO'];} 
                 
                //se ho indicato regione="tutte"... tolgo il valore dal campo regione 
                if($regione == "all"){ 
                    $regione = ""; 
                }  
                if($citta == "all"){ 
                    $citta = ""; 
                }              
                //a seconda dei parametri cremo condizioni per sql 
                if($localita!="") $where_localita = "and localita='$localita'";      
                if($citta!="") $where_citta = "and citta='$citta'"; 
                if($regione!="") $where_regione = "and regione='$regione'"; 
                if($stato!="") $where_stato = "and stato='$stato'"; 
                 
                if($cs!="") $where_cs = "and cs=1"; 
                if($aa!="") $where_aa = "and aa=1"; 
                if($ps!="") $where_ps = "and ps=1"; 
                if($camper_stop!="") $where_camper_stop = "and camper_stop=1";             
                if($wifi!="") $where_wifi = "and wifi=1"; 
                if($gratis!="") $where_gratis = "and gratuito=1"; 
                if($pagamento!="") $where_pagamento = "and pagamento=1"; 
             
                   $count = mysql_query("SELECT COUNT(id) FROM camperservice where id=id 
                    $where_localita $where_citta $where_regione $where_stato $where_cs 
                    $where_aa $where_ps $where_camper_stop $where_wifi $where_gratis"); 
                   $res_count = mysql_fetch_row($count); 
    
                   // numero totale di records 
                   $tot_records = $res_count[0]; 
                  // print (ci sono :"$tot_records");  
    
                   // risultati per pagina(secondo parametro di LIMIT) 
                     $per_page = 5; 
                    // 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; 
                    echo "<div align=\"center\">\n<table>\n"; 
                    //print ("<span class='testonormale' align='left'><a href='index.php' class='Stile1'>nuova ricerca</a></span>"); 
                        // esecuzione seconda query con LIMIT 
                       $sql="select * from camperservice where id=id 
                    $where_localita $where_citta $where_regione $where_stato $where_cs 
                    $where_aa $where_ps $where_camper_stop $where_wifi $where_gratis limit $primo,$per_page";   
                           $result_sql=mysql_query($sql,$dbconn); 
    
    
                           if($result_sql!=""){ 
                           print "<table width='100%'>"; 
                        
                        //mostro elenco risultati  
                             while($row_sql=mysql_fetch_object($result_sql)){ 
                           //stringa di descrizione del cs 
                             
                            $tx_indirizzo = " $row_sql->localita, $row_sql->citta "; 
                             
                            if($row_sql->cs==1) $comp_cs = "<strong>CS</strong>"; 
                            else $comp_cs = ""; 
    
                            if($row_sql->aa==1) $comp_aa = "<strong>AA</strong>"; 
                            else $comp_aa = ""; 
    
                            if($row_sql->ps==1) $comp_ps = "<strong>PS</strong>"; 
                            else $comp_ps = ""; 
    
                            if($row_sql->camper_stop==1) $comp_camper_stop = "<strong>CAMPER-STOP</strong>"; 
                            else $comp_camper_stop = ""; 
    
                            if($row_sql->wifi==1) $comp_wifi = "<strong>WI-FI</strong>"; 
                            else $comp_wifi = ""; 
    
                            $tx_tipo = "$comp_cs $comp_aa $comp_ps $comp_camper_stop $comp_wifi"; 
                             
                             
                            //comp nome 
                            if(($row_sql->localita == $row_sql->citta)||($row_sql->citta == "")){ 
                                $tx_nome = "$row_sql->localita"; 
                            }else{ 
                                $tx_nome = "$row_sql->localita ($row_sql->citta)"; 
                            } 
                             
                             
                            $cs_box = "<table class='box' class='testonormale' align='left' width='50%'> 
                                                    <tr> 
                                                        <td align='left'> 
                                                            <a href='detail.php?id_cs=$row_sql->id' class='Stile1'><b>$tx_nome</b></a> 
                                                        </td> 
                                                    </tr> 
                                                    <tr> 
                                                        <td align='left'> 
                                                            $tx_tipo 
                                                        </td> 
                                                    </tr> 
                                                    <tr> 
                                                        <td align='left'> 
                                                            $row_sql->indirizzo - $row_sql->localita ($row_sql->citta) 
                                                        </td> 
                                                    </tr> 
                                                </table>"; 
                             
                             
                             
                            print ("<tr><td>$cs_box</td></tr>"); 
                          
                               
                        } 
                        include("paginazione.php"); 
                          // in questa cella inseriamo la paginazione 
                      echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n"; 
    
                      echo " </tr>\n\n</div>"; 
                        print "</table>"; 
                    }else{ 
                        print ("<span class='testonormale'>Nessun CamperService trovato</span>"); 
                    } 
                    print ("<br><span class='testonormale' align='left'><a href='index.php' class='Stile1'>nuova ricerca</a></span>"); 
                             
                 
         ?>
    
    ``` Questa è la pagina  di gestione pagine:
    

    <?php

    $paginazione = "Pagine totali: " . $tot_pages . "
    [";
    for($i = 1; $i <= $tot_pages; $i++) {
    if($i == $current_page) {
    $paginazione .= $i . " ";
    } else {
    $paginazione .= "<a href="?page=$i" title="Vai alla pagina $i">$i</a> ";
    }
    }
    $paginazione .= "]";

    ?>