Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60

    paginazione, troppe pagine

    allora prima cosa mi volevo scusare x il titolo generico del topic aperto in precedenza....

    cmq a parte questo, io ho creato una pagina in php ke mi suddivide in pagine dinamiche i risultati di una query (esattamente 15 x pagina)... il problema è ke io metot mani su database da decine di migliaia di tuple.... quindi ad esempio nella pagina ke ho appena creato mi viene fuori una paginazione con piu di 300 pagine avendo 15 risultati x pagina.....

    e quindi sotto lo skermo viene uno skifo, okkupa metà pagina solo x i numeri delle pagine.... cioè ad esempio invece ke avere:

    <Previous|1 2 3 4 5 6 7 8 9 10 11 12 13 14 15|next>

    avere una funzione ke mi cambi ad esempio cosi (l'ho visto in alcuni siti ad esempio google)

    <Previous|1 2 3....8 9 10|next> e se sono nella pagina 3 <Previous|4 5 6....11 12 13|next>


    km faccio?

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    nel mio caso io mi sono limitato a fare in questo modo :

    l' utente si trova nella pagina 8 in questo momento
    << < 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 > >>

    se l' utente si trova nella pagina 3 invece

    << < 1 2 3 4 5 6 7 8 9 10 > >>


    ho solo stabilito un max di pagine da fare visualizzare prima e dopo la pagina corrente

    il > avanza di una pagina e il >> porta all' ultima pagina
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60
    si ecoc anke cosi... magari in modo ke mi si cancellino le prime pagine piu vado avanti....

    xo oltre a dirmi km hai fatot nn è ke mi spieghi km si fa? LOL

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    dipende da tante cose, non è che programmiamo tutti allo stesso modo, i risultati per l' impaginazione da dove arrivano ? da un array ? mentre cicli una query? sono patatine??

    ti consiglio di leggere in una dele pillole di questo forum, ricordo di aver letto qualcosa al riguardo

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60
    guarda.... il mio file x la paginazione è questo:

    Codice PHP:
    <?php

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

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

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

    if(
    $current_page == $tot_pages)
       {
    // se siamo nell'ultima pagina
        
    $last ">>";
        }
     else
      {
    // altrimenti
       
    $last_page $tot_pages;
       
    $last "<a href=\"?page=$last_page\" title=\"Vai all'ultima pagina\"> >> </a>";
       }


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

    $paginazione .= "] ".$successiva $last;


    ?>

    viene rikiamato in un'altra pagina dove vengono stampati i risultati

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    eccoti la mia funzione

    per funzionare gli passi 2 argomenti : la pagina attuale e il numero totale degli articoli ottenuti dalla tua query oppure il numero di elementi dell' array.. vedi tu

    Codice PHP:
    function list_pages($pagina,$articoli)
      {
      
    $cols 3// le colonne 
      
    $rows 5// le righe
      
    $pages 8;   // num di pagine prima e dopo la pagina attuale

      
    $elements=$cols*$rows// il numero di elementi per pagina
      
    $num_pagine=ceil(count($articoli)/$elements)-1;

      
    $qry_str="";
      
      
    // in questi 3 cicli if determino i link da assegnare ai numeri delle pagine
      
    if (isset($_REQUEST['brand']) && $_REQUEST['brand'] != ""$qry_str.="&brand=".$_REQUEST['brand'];
      if (isset(
    $_REQUEST['grp']) && $_REQUEST['grp'] != ""$qry_str.="&grp=".$_REQUEST['grp'];
      if (isset(
    $_REQUEST['s_grp']) && $_REQUEST['s_grp'] != ""$qry_str.="&s_grp=".$_REQUEST['s_grp'];
      
    $qry_str=substr($qry_str,1); 
      
    //echo "$qry_str
    ";
      
      
    $str="";

      if (
    $pagina!="1")
      
    $str.="<a href=\"list.php?$qry_str&page=1\"> << </a><a href=\"list.php?$qry_str&page=".($pagina-1)."\"> < </a>";
      
      if (
    $pagina<$pages)
        
    $max=1;  
      else
        
    $max=$pagina-$pages;
      
      for (
    $a=$max;$a<=($pagina-1);$a++) //antecedente la pagina attuale
        
    {
        
    $str.="<a href=\"list.php?$qry_str&page=$a\">$a</a>";
        }

      
    $str.="[b]$pagina[/b]";

      if ((
    $pagina+$pages)>$num_pagine)
        
    $max=$num_pagine-$pagina;  
      else
        
    $max=$pages;
      
    //echo $max;
      
    for ($p=$pagina+1;$p<=$pagina+$max;$p++) // dopo la pagina attuale
        
    {
        
    $str.="<a href=\"list.php?$qry_str&page=$p\">".$p."</a>";
        }

      if (
    $pagina!=$num_pagine)
        
    $str.="<a href=\"list.php?$qry_str&page=".($pagina+1)."\"> > </a><a href=\"list.php?$qry_str&page=$num_pagine\"> >> </a>";
      
      
      echo <<<OUT
    <table border="0" width="100%" id="intestazione,5,1,enum">
        <tr>
            <td align="center">
    $str</td>
        </tr>
    </table>
    OUT;
      } 
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60
    ok, ho risolto in questo modo:

    Codice PHP:
    <?php

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

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

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

    if(
    $current_page == $tot_pages)
       {
    // se siamo nell'ultima pagina
        
    $last ">>";
        }
     else
      {
    // altrimenti
       
    $last_page $tot_pages;
       
    $last "<a href=\"?page=$last_page\" title=\"Vai all'ultima pagina\"> >> </a>";
       }


    $paginazione "Pagine totali: " $tot_pages "
    $first $precedente ." [";

    //prime 5 pagine
    if($current_page<=5)
      {for(
    $k 1$k <= 11$k++)
        {if(
    $k == $current_page)
           {
    $paginazione .= $k " ";
            }
          else
           {
    $paginazione .= "<a href=\"?page=$k\" title=\"Vai alla pagina $k\">$k</a> ";
            }
         }
       }

    //pagine in mezzo
    if(($current_page<$tot_pages-5)AND($current_page>5))
      {for(
    $k $current_page-5$k <= $current_page+5$k++)
        {if(
    $k == $current_page)
           {
    $paginazione .= $k " ";
            }
          else
           {
    $paginazione .= "<a href=\"?page=$k\" title=\"Vai alla pagina $k\">$k</a> ";
            }
         }
       }
       
    //ultime 5 pagine
    if($current_page>=$tot_pages-5)
      {for(
    $k $current_page-5$k <=$tot_pages$k++)
        {if(
    $k == $current_page)
           {
    $paginazione .= $k " ";
            }
          else
           {
    $paginazione .= "<a href=\"?page=$k\" title=\"Vai alla pagina $k\">$k</a> ";
            }
         }
       }
       
       
    $paginazione .= "] ".$successiva $last;


    ?>

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.