Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    14

    ORDER by variabile su paginazione di }gu|do[z]

    Saluti al forum.
    Ho implementato la paginazione di }gu|do[z] presente nelle "pillole", e vorrei far si che l'utente una volta ottenuti i risultati, possa ordinarli secondo diverse opzioni. Sarebbe ideale che ciò avvenisse cliccando sulle intestazioni dei campi ma mi andrebbe bene anche inserendo un form nella pagina.
    Ho provato in mille modi ma non riesco a cavarne niente di buono. (c'è da dire che non sono una maga del php).
    Riporto il codice della pagina e della funzione che questa include e...... grazie infinite

    codice pag.

    Codice PHP:
    <?php
    //includi la funzione
    include ("paging.func.php"); 
    ?>
    <body>
    <table border="1" align="center" width="597" cellpadding="0" cellspacing="0">
      <tr class="head_risultati">
        <td>marca</td>
        <td>mod.</td>
        <td>cc.</td>
        <td>alimentazione</td>
        <td>carrozzeria</td>
        <td>colore</td>
        <td>anno</td>
        <td>km</td>
        <td>prezzo &euro; </td>
        <td>foto</td>
      </tr> 
      
    <?php
    //setto le variabili provenienti dal form
    $provincia $_GET['provincia'];
    $comune $_GET['comune'];
    $marca $_GET['marca'];
    $modello $_GET['modello'];
    $cc $_GET['cc'];
    $alimentazione $_GET['alimentazione'];
    $carrozzeria $_GET['carrozzeria'];
    $colore $_GET['colore'];
    $anno $_GET['anno'];
    //---------------------------inizio var km
    $km $_GET[km];
    $km explode("_",$_GET[km]);
    $km[0];
    $km[1];
    //---------------------------fine var km
    $prezzo $_GET['prezzo'];

    //setto le condizioni della query
    $condizioni == "";
    if (
    $provincia != "%"$condizioni.= "AND provincia = '$provincia'";
    if (
    $comune != "%"$condizioni.= "AND comune = '$comune'";
    if (
    $marca != "%"$condizioni.= "AND marca = '$marca'";
    if (
    $modello != "%"$condizioni.= "AND modello = '$modello'";
    if (
    $cc != "%"$condizioni.= "AND cc = '$cc'";
    if (
    $alimentazione != "%"$condizioni.= "AND alimentazione = '$alimentazione'";
    if (
    $carrozzeria != "%"$condizioni.= "AND carrozzeria = '$carrozzeria'";
    if (
    $colore != "%"$condizioni.= "AND colore = '$colore'";
    if (
    $anno != "%"$condizioni.= "AND anno = '$anno'";
    if (
    $km != "%"$condizioni.= "AND(km >= ('$km[0]') AND km <= ('$km[1]'))";
    if (
    $prezzo != "%"$condizioni.= "AND prezzo <= '$prezzo'";

    //sottomissione della query (come usare mysql_query())

    mysql_select_db($database_mioDB$mioDB) or die .mysql_error();

        
    $res paging("SELECT * FROM regione WHERE 1 $condizioni ORDER BY marca");

        
    /*
        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 " <tr><td colspan='10' align='center>Nessun risultato</td></tr>";}
        else
        {
                
    /*sull'elemento zero si opera con un ciclo allo stesso modo
                   in cui si farebbe con il risultato di mysql_query()
                */
           
    while($dati mysql_fetch_array($res[0]))
             {
         
    //inizio a stampare il layout ed i dati
         
    echo ("<tr>
                <td> 
    $dati[marca]</td>
                <td>
    $dati[modello]</td>
                <td>etc. etc.</td>
            </tr>"
    );
              
             }
           }
                 
        
    /*
         stampa del minimenu' di link alle altre pagine
                  (poteva essere stampato anche prima del ciclo)
                */
            
    echo "
    Pag."
    .$res[1];
               
    mysql_close();
          
    ?>
    </table>
      </body>
    e questo è il file che include

    Codice PHP:
           <?php
        
    function paging($query,$x_pag=5,$num_links=5)
        {
        
    //conteggio i record presenti
        //(ringrazio pero.mac per la compatibilità con mysql 5)
        
    $resource =  mysql_query($query);

        if(!
    $resource) { echo 'Si è verificato un errore con la query inserita.
     Lerrore restituito è: [i]'
    mysql_error(),'[/i]'; exit; }

        
    $righe mysql_num_rows($resource);
        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);
        }
        
    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    14
    UP!

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.