Visualizzazione dei risultati da 1 a 3 su 3

Discussione: paginazione

  1. #1

    paginazione

    ciao ho usato questo codice per impaginare 20 record per pagina.
    Con il mini menu che linka alle pagine.
    vorrei sapere se qualche buon'anima mi aiuta a correggere il tutto inserendo un link "successivo" "precedente" invece dei numeri.

    Codice PHP:
    <?php

    function paging($query,$x_pag=20,$num_links=5)
    {
        
     
    //conteggio i record presenti
     
    $query "SELECT * FROM Utenti"
     
    $righe mysql_num_rows(mysql_query($query));
     if (
    $righe == 0){ return false; }

     
    //calcolo il numero di pagine necessarie per visualizzare i dati
     
    $numpages ceil($righe/$x_pag);
     
     
    //ottengo il numero di pagina, se manca lo imposto ad 1
     
    $pag = isset($_GET['pag'])? $_GET['pag'] : 1;
     
     
    //imposto il primo estremo del limit
     
    $da = ($pag-1) * $x_pag;
     
     
    //appendo il limit alla query originaria
     
    $query .= " LIMIT $da,$x_pag";
     
     
    //gesisco la propagazione della query string
     
    $querystring '';
        foreach(
    $_GET as $k => $v)
          {
           if (
    $k != 'pag')
             {
               
    $querystring .= "&".$k."=".$v;
             }
          }
     
     
    //inizializzo una stringa vuota in cui appenderò l'output del menu'
     
    $menu '';
     
    //serie di condizionali in cascata per costruire il menu' 
    if($numpages <= $num_links
      {
        for (
    $pagina 1$pagina <= $numpages$pagina++)
          {
            if (
    $pagina == $pag)
              
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
            else
              
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
          }
      }

    //se la pag corrente è tra le prime $num_links/2 --> stampo i primi $nun_links link
    else if($pag <= ceil($num_links/2))
      {
        for (
    $pagina=1$pagina<=$num_links$pagina++)
          {
            if (
    $pagina == $pag)
              
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
            else
              
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
          }
        
    $menu .= "<a class=\"pag_link\" href=\"?pag={$numpages}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
      }

    //se la pag corrente è tra le ultime $num_links/2 --> stampo gli ultimi $nun_links link
    else if($pag > ($numpages-ceil($num_links/2)))
      {
        
    $menu .= "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> ";
        for (
    $pagina=$numpages-$num_links+1$pagina<=$numpages$pagina++)
          {
            if (
    $pagina == $pag)
              
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
            else
              
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
          }
      }

    //Altrimenti la pagina corrente è una dell centrali --> stampo i $nun_links/2 link prima ed $nun_links/2 link dopo
    else
      {
        
    $menu .= "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> ";
        for (
    $pagina $pag-ceil($num_links/2-1); $pagina <= $pag+ceil($num_links/2-1); $pagina++)
          {
            if (
    $pagina == $pag)
              
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
            else
              
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
          }
        
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
      }

     
    //restituisco il risultato della query, e l'output del menu'
     
    return array(mysql_query($query),$menu);
    }
    questa func viene richiamata dalla mia pagina:
    Codice PHP:
    include('function.paging.php');    
                
    //sottomissione della query (come usare mysql_query()) 
    $res paging('SELECT * FROM Utenti'); 

    //verifica dei risultati: $res è un array.. l'elemento zero contiene il risultato della query per la pagina corrente... 
    //mentre l'elemento 1 che useremo dove ci pare (nell'esempio lo usiamo alla fine) contiene il codice del minimenu' da dare semplicemente in output 
    if (!$res[0]) { echo "non ci sono dati";} 
    else 

    while(
    $dati mysql_fetch_array($res[0])) 
         { 
                                              
    $Matr $dati['Matricola'];
     } 
       } 
             
    //stampa del minimenu' di link alle altre pagine 
             // (poteva essere stampato anche prima del ciclo) 
       
    echo "
    "
    .$res[1]; 

  2. #2
    A chi può far comodo ho risolto così:

    Codice PHP:
    if ($righe $x_pag && $numpages $pag) {

    echo 
    "[url='?pag=" . ($pag+1) . "']Pagina successiva --&gt;[/url]";
    }
    // se ci fossero altre pagine, vado avanti

    if ($pag 1) {
    echo 
    "

    [url='?pag=" 
    . ($pag-1) . "']&lt;--- Pagina precedente[/url]";

    inserire il codice al posto di tutto il sottostante:
    Codice PHP:

     
    //inizializzo una stringa vuota in cui appenderò l'output del menu'
     /*$menu = '';
     
    //serie di condizionali in cascata per costruire il menu' 
    if($numpages <= $num_links) 
      {
        for ($pagina = 1; $pagina <= $numpages; $pagina++)
          {
            if ($pagina == $pag)
              $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
            else
              $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
          }
      }

    //se la pag corrente è tra le prime $num_links/2 --> stampo i primi $nun_links link
    else if($pag <= ceil($num_links/2))
      {
        for ($pagina=1; $pagina<=$num_links; $pagina++)
          {
            if ($pagina == $pag)
              $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
            else
              $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
          }
        $menu .= "<a class=\"pag_link\" href=\"?pag={$numpages}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
      }

    //se la pag corrente è tra le ultime $num_links/2 --> stampo gli ultimi $nun_links link
    else if($pag > ($numpages-ceil($num_links/2)))
      {
        $menu .= "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> ";
        for ($pagina=$numpages-$num_links+1; $pagina<=$numpages; $pagina++)
          {
            if ($pagina == $pag)
              $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
            else
              $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
          }
      }

    //Altrimenti la pagina corrente è una dell centrali --> stampo i $nun_links/2 link prima ed $nun_links/2 link dopo
    else
      {
        $menu .= "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> ";
        for ($pagina = $pag-ceil($num_links/2-1); $pagina <= $pag+ceil($num_links/2-1); $pagina++)
          {
            if ($pagina == $pag)
              $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
            else
              $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
          }
        $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
      }
    */ 

  3. #3
    non capisco come fare per sostituire a questa semplice select una con un where magari...
    questa

    $res = paging('SELECT * FROM Utenti');

    con questa

    $sqlSel = "SELECT Id,Matricola,Nominativo,Telefono,Mail,Sede FROM Utenti WHERE Matricola = '".$MatrCall."'";
    include('function.paging.php');

    $res = paging($sqlSel);

    così mi va in Fatal error: Maximum execution time of 30 seconds exceeded in D:\HelpDesk\TabellaHD.php on line 253

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.