Ordinamento colonne

Panta_Rei

Nuovo Utente
17 Apr 2008
9
0
0
Salve a tutti. Ho un bel problema.
Ho la seguente funzione.

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\"><a href='index.php?field=Codice_articolo&sort={$verso}'>Codice_articolo</a></td> 

    <td width=\"149\" class=\"intestazione\"width=\"223\"><a href='index.php?field=descrizione&sort={$verso}'>descrizione</a></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!
 
Cliccando su uno dei link per l'ordinamento tipo questo:

<a href='index.php?field=Costruttore&sort={$verso}'>
non viene valorizzata la variabile $_GET['testodescrizione'], che quindi
al ricaricamento della pagina risulta vuota, eseguendo di fatto questa query:

SELECT * from listini where Codice_articolo like "%%" order by ...

prendendo tutto il DB!!!

Prova a modificare così il link:

<a href='index.php?testodescrizione={$word}&field=Costruttore&sort={$verso}'>
 
Effettivamente avevi ragione. Non passavano i valori nel link
Ho cambiato così e Funge:

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

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

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

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

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

  </tr> 
</table>";
Grazie!
 

Discussioni simili