Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Ordinamento colonne

  1. #1

    Ordinamento colonne

    Salve a tutti. Ho un bel problema.
    Ho la seguente funzione.
    Codice PHP:
    Function VisualizzaTabellaFooter($elencotabelle,$criterioricerca,$testodescrizione){
    INCLUDE(
    'config.php'); 
    ###################################
    // Funzione che visualizza i dati contenuti nella tabella listini. Vengono visualizzati in
       //una tabella che ha righe di colore alternato, intestazione cliccabile per cambiare
         //  l'ordinamento dei dati, scrollabile.
    #############################################################
    $connessione mysql_connect($db_host$db_user,$db_password) or die("Connessione fallita !"); 
    @
    mysql_select_db($db_name) or die("Selezione Database fallita !"); 

     
    $testodescrizione=$_GET['testodescrizione'];
    $elencotabelle=$_GET['elencotabelle'];

    if (isset(
    $_GET['field'])) { 
    $campo $_GET['field'] == "descrizione" "descrizione" "Codice_articolo" 
    } else { 
    $campo "Costruttore"

    if (isset(
    $_GET['sort'])) { 
    $verso $_GET['sort'] == "desc" "DESC" "ASC"
    } else { 
    $verso "ASC"


    if ((
    $elencotabelle=="listini" and  $testodescrizione="")or ($elencotabelle=="costruttori" or $elencotabelle=="categorie")){
             
     
    //stampo la tabella listini per intero

    $sql="SELECT * from listini order by {$campo} {$verso}  "

    $risultato_query=mysql_query($sql,$connessione)or die ("query 1 fallita"); 
                                
                                }

    else{  

        
    // stampo la tabella listini con il filtro WHERE Codice_articolo
        
        
    $word=trim($_GET['testodescrizione']);

        
    $sql1="SELECT * from listini where Codice_articolo like \"%$word%\"   order by {$campo} {$verso} 
     "
    ;
        
    $risultato_query=mysql_query($sql1,$connessione)or ("Query sbagliata " .mysql_error()); 
         
    // controlla il risultato della query attraverso la funzione mysql_query 
    }

    $res_count=mysql_num_rows($risultato_query); 
    // numero totale di records 

    $verso = ($verso == "ASC") ? "desc" "asc"

      echo 
    "<table width=\"747\" border=\"1\">
      <tr> 
        <td width=\"118\"class=\"intestazione\"width=\"223\"><a href='index.php?field=Costruttore&sort=
    {$verso}'>Costruttore
        </a></td>

        <td width=\"164\" class=\"intestazione\"width=\"223\">[url='index.php?field=Codice_articolo&sort=
    {$verso}']Codice_articolo[/url]</td>

        <td width=\"149\" class=\"intestazione\"width=\"223\">[url='index.php?field=descrizione&sort=
    {$verso}']descrizione[/url]</td>

        <td width=\"141\"class=\"intestazione\"width=\"223\"><a href='index.php?field=listino&sort=
    {$verso}'>listino</td>

        <td width=\"141\"class=\"intestazione\"width=\"223\"><a href='index.php?field=Codice Barcode&sort=
    {$verso}'>Codice Barcode</td>

      </tr>
    </table>"
    ;
         echo
    " <div id=\"Layer1\"  style=\" width:747px; height:115px; overflow: auto;\"> "
     
    $class ''

     while(
    $riga=mysql_fetch_array($risultato_query)){ 
         
                  
    $Costruttore=$riga["Costruttore"]; 
                 
    $Codice_articolo=$riga["Codice_articolo"]; 
                 
    $descrizione=$riga["descrizione"]; 
                  
    $listino=$riga["listino"];
                  
    $barcode=$riga["codice_barcode"];
                 
                 
    $class $class == 'colore1' 'colore2' 'colore1'
             
     echo 
    "<table width=\"747\" border=\"1\">";
                 echo
    " <tr class= \"$class\"> "

        echo
    " <td  width=\"118\" class= \"$class\" >$Costruttore </td>";
        echo
    "<td    width=\"164\" >$Codice_articolo</td>"
         echo
    "<td    width=\"149\" >$descrizione</td>"
         echo
    "<td    width=\"141\" >$listino</td>"
         echo
    "<td    width=\"141\" >$barcode</td>"
        echo
    "</tr>"
             }
             echo
    "</table>";
           echo
    "</div>";
     echo
    "</td>";
      echo
    " </tr>";
     echo
    "</body>";
     echo
    "</html>";

    La funzione fa il suo dovere quando si è nel primo if . Ovvero Stampa tutta la tabella 'listini' e cliccando sulle colonne fa l'ordinamento DI TUTTA LA TABELLA, in base a quel campo.

    Quando invece entro nell' else , fa il filtro grazie alla condizione di WHERE, ma CLICCANDO SULLE COLONNE MI RESTITUISCE TUTTI I RECORD DELLA TABELLA, INDISTINTAMENTE, SENZA FILTRO.

    Come posso sistemarla?
    Grazie!

  2. #2
    hai controllato il valore di $word ?
    viene passato correttamente?

  3. #3
    Grazie x aver risposto.
    Si ho controllato e lo passa.

    Penso che il problema sia qui

    Codice PHP:
    if (isset($_GET['field'])) { 
    $campo $_GET['field'] == "descrizione" "descrizione""Codice_articolo" 
    } else { 
    $campo "Costruttore"

    if (isset(
    $_GET['sort'])) { 
    $verso $_GET['sort'] == "desc" "DESC" "ASC"
    } else { 
    $verso "ASC"

    Codice PHP:
    $verso = ($verso == "ASC") ? "desc" "asc"
    Infatti se passo il mouse sul link, dopo che ho eseguito la query con il where, leggendo questo link a video non si ha nel collegamento la clausola di where. Leggendolo il link, fa solo l'ordinamento su quella colonna.
    Come posso risolvere?

  4. #4
    non credo sia quello che dici
    in quando influenzerebbe solo l'ordinamento e non il filtro
    sei sicuro che in mysql si usi % con LIKE?
    non potrebbe essere *? (io non lo so)

    oppure

    non è che $word abbia ad esempio valore: a
    quindi facendo %a% prtaticamente tutti gli articoli
    rispondono alla query?

    per avere solo quelli che iniziano con a devi usare %a

  5. #5
    In effetti è proprio quello il mio problema.

    L'ORDINAMENTO QUANDO FA LA QUERY DELL'ELSE.

    Le 2 query fuzionano. Potete vedere QUI l'esempio.
    Se aprite con firefox, e mettete ad esempio listini, codice, a10, compariranno 11 record nella tabella sottostante.

    Ma quando tento di fare l'ordinamento, lo fa di tutto e 300 presenti, senza tenere conto del WHERE.

    Avete suggerimenti su come sistemare il codice di sopra?
    Grazie!
    Sono proprio bloccato.

  6. #6
    mi sembra di aver capito
    la query è giusta
    il problema è ancora nel passaggio del parametro

    $word=trim($_GET['testodescrizione']);

    quando compili il campo testodescrizione nella form ricerca e clicchi su ricerca è tutto ok
    perchè probabilmente passi il tutto in POST e usi un'altra funzione che non hai postato

    poi quando clicchi sulla testata della tabella non passi testodescrizione in GET!!
    passi solo i parametri field e sort

    per risolvere devi fare in modo di tenerti il parametro (o meglio i parametri)
    quando ricarichi le pagine

    ciao

  7. #7
    puoi essere più chiara. io proprio non riesco a modificarlo in nessun modo .
    Posto il form.

    Codice PHP:
    <table width="1259" border="0" cellpadding="0" cellspacing="0">
      
      <tr> 
        <td width="617" height="257" valign="top"> 
          <? require("mostrarisultati.php");
        
    sezionedestra();
         
    ?>
        </td>
        <td width="642" valign="top"> <table width="472" border="0" cellpadding="0" cellspacing="0">
            
            <tr> 
              <td width="472" height="244" valign="top"> <form action="<?=$_SERVER['PHP_SELF']?>" method="GET">
                  <table width="75%" border="0">
                    
                    <tr> 
                      <td height="40" colspan="2" valign="top" class="testobox">[b]<font color="#FFFFFF">Seleziona 
                        

                        Tabella</font>[/b]</td>
                      <td width="325" valign="top"> <select name="elencotabelle" <?=$_GET['elencotabelle']?> ">
                          <option selected="_"> 
                          <option value="costruttori">costruttori</option>
                          <option value="categorie">categorie</option>
                          <option value="listini">listini</option>
                        </select></td>
                    </tr>
                    <tr> 
                      <td height="59" colspan="2" valign="top" class="testobox">[b]<font color="#FFFFFF">Seleziona 
                        

                        Campo per Ricerca</font>[/b]</td>
                      <td valign="top"> <select name="criterioricerca" <?=$_GET['criterioricerca']?> ">
                          <option selected=""></option>
                          <option value="Codice">Codice</option>
                          <option value="Nome">Nome</option>
                          <option value="Descrizione">Descrizione</option>
                        </select></td>
                    </tr>
                    <tr> 
                      <td height="59" colspan="2" valign="top" class="testobox">[b]<font color="#FFFFFF">Inserisci

                        Valore da Ricercare</font>[/b]</td>
                      <td valign="top"> <input name="testodescrizione" type="text" class="textbox" id="testodescrizione" size="30" <?=$_GET['testodescrizione']?> "
                        ></td>
                    </tr>
                    <tr> 
                      <td width="107" height="28"></td>
                      <td colspan="2" valign="top"><button type="submit"> Ricerca</button></td>
                    </tr>
                    <tr> 
                      <td height="3"></td>
                      <td width="19"></td>
                      <td></td>
                    </tr>
                  </table>
                  <p class="bordotabella"></p>
                </form></td>
            </tr>
          </table></td>
      </tr>
    </table>
    <table width="1017" border="0" cellpadding="0" cellspacing="0">
      
      <tr> 
        <td width="981" height="100" valign="top">
        <? 
                    
    // questa funzione è contenuta in MostraTabellaRisultati.php, 
                    // che è a sua volta richiamata tramite il require in mostrarisultati.php
                    // richiamato all'inizio di questo form
            
    VisualizzaTabellaFooter($elencotabelle,$criterioricerca,$testodescrizione);
         
    ?>
        </td>
        <td width="36"></td>
      </tr>
    </table>

  8. #8
    purtroppo non capisco bene che logica hai usato e perchè tenti di passare i parametri in GET anzichè POST
    posso provare a darti un'indizio prova così

    Codice PHP:
    <input name="testodescrizione" type="text" class="textbox" id="testodescrizione" size="30" value="<?$_POST['testodescrizione']?>"></input>
    in questo modo il campo 'testodescrizione' dovrebbe rimanerti compilato al ricaricamento della pagina.

    poi nella query usi $_POST['testodescrizione']
    anzichè $_GET['testodescrizione']

    questo modo però ti introduce una logica diversa e devi rivedere un po tutto lo script

    ciao

  9. #9
    Faccio un ultimo tentativo.
    C'è qualcuno che sa come sistemare l'ordinamento delle colonne in caso di select con il where nello script postato?

    Il test del lavoro è qui .

    Se qualcuno volesse vedere i 3 file del progetto sono qui

  10. #10
    Ho cambiato il codice.
    Ma fallisce qui:

    Codice PHP:
    ..ORDER BY {$campo} {$verso"; 
    Se levo questo order fa la select con il where. Se no, non stampa niente. Come mai? Come posso risolverlo?

    Codice PHP:
    Function VisualizzaTabellaFooter($elencotabelle,$criterioricerca,$testodescrizione){ 
    INCLUDE(
    'config.php'); 
    ################################### 
    // Funzione che visualizza i dati contenuti nella tabella listini. Vengono visualizzati in 
       //una tabella che ha righe di colore alternato, intestazione cliccabile per cambiare 
         //  l'ordinamento dei dati, scrollabile. 
    ############################################################# 
    $connessione mysql_connect($db_host$db_user,$db_password) or die("Connessione fallita !"); 
    @
    mysql_select_db($db_name) or die("Selezione Database fallita !"); 

    $testodescrizione=$_GET['testodescrizione']; 
    $elencotabelle=$_GET['elencotabelle']; 
    $criterioricerca=$_GET['criterioricerca']; 

           
    $campo$criterioricerca

        
    //print"$campo"; 
    if (isset($_GET['sort'])) {
        
        if (
    $_GET['sort'] == "desc")

                     
    $verso "DESC" ;
            else 
                      
    $verso ="ASC"

                              } else { 
                                      
    $verso "ASC"
                                       }

                                     
    //  print"$verso";



        // stampo la tabella listini con il filtro WHERE Codice_articolo 
         
        
    $word=trim($_GET['testodescrizione']); 

        
    $sql1="SELECT * FROM listini WHERE Codice_articolo LIKE \"%$word%\"   ORDER BY {$campo} {$verso} "
        
    $risultato_query=mysql_query($sql1,$connessione)or ("Query sbagliata " .mysql_error()); 
         
    // controlla il risultato della query attraverso la funzione mysql_query 


    $res_count=mysql_num_rows($risultato_query); 
    // numero totale di records 

    if ($verso == "ASC")

         
    $verso "desc";
    else 
          
    $verso ="asc"

      echo 
    "<table width=\"747\" border=\"1\"> 
      <tr> 
        <td width=\"118\"class=\"intestazione\"width=\"223\"><a href='index.php?criterioricerca=Costruttore&sort=
    {$verso}'>Costruttore 
        </a></td> 

        <td width=\"164\" class=\"intestazione\"width=\"223\">[url='index.php?criterioricerca=Codice_articolo&sort=
    {$verso}']Codice_articolo[/url]</td> 

        <td width=\"149\" class=\"intestazione\"width=\"223\">[url='index.php?criterioricerca=descrizione&sort=
    {$verso}']descrizione[/url]</td> 

        <td width=\"141\"class=\"intestazione\"width=\"223\"><a href='index.php?criterioricerca=listino&sort=
    {$verso}'>listino</td> 

        <td width=\"141\"class=\"intestazione\"width=\"223\"><a href='index.php?criterioricerca=Codice Barcode&sort=
    {$verso}'>Codice Barcode</td> 

      </tr> 
    </table>"

         echo
    " <div id=\"Layer1\"  style=\" width:747px; height:115px; overflow: auto;\"> "
    $class ''

    while(
    $riga=mysql_fetch_array($risultato_query)){ 
          
                  
    $Costruttore=$riga["Costruttore"]; 
                 
    $Codice_articolo=$riga["Codice_articolo"]; 
                 
    $descrizione=$riga["descrizione"]; 
                  
    $listino=$riga["listino"]; 
                  
    $barcode=$riga["codice_barcode"]; 
                  
                 
    $class $class == 'colore1' 'colore2' 'colore1'
              
    echo 
    "<table width=\"747\" border=\"1\">"
                 echo
    " <tr class= \"$class\"> "

        echo
    " <td  width=\"118\" class= \"$class\" >$Costruttore </td>"
        echo
    "<td    width=\"164\" >$Codice_articolo</td>"
         echo
    "<td    width=\"149\" >$descrizione</td>"
         echo
    "<td    width=\"141\" >$listino</td>"
         echo
    "<td    width=\"141\" >$barcode</td>"
        echo
    "</tr>"
             } 
             echo
    "</table>"
           echo
    "</div>"
    echo
    "</td>"
      echo
    " </tr>"
      echo
    "<table width=\"747\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">";
            echo
    " <tr> ";
              echo
    "<td class=\"testolabel\"> I Record presenti sono: $res_count ";
               echo
    "</td>";
               echo
    " </tr> ";
     echo
    "</table>";
    echo
    "</body>"
    echo
    "</html>"


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.