Categories: PHP

Ordinare gli Articoli di Magazzino

Ora che abbiamo creato una lista di valori con cambio di pagina, possiamo pensare di aggiungere qualche altra caratteristica tipica degli elenchi, l’ordinamento tramite le intestazioni di colonna. In pratica dobbiamo fare in modo che al click dell’utente su un’intestazione di colonna la nostra lista degli articoli di magazzino ordini i valori in senso ascendente su quel tipo di dato. In caso di ordinamento la colonna deve avere un’icona che se cliccata consente di ordinare in senso discendente e viceversa i valori.

Una lista con ordinamento crescente o decrescente

Per prima cosa dobbiamo aggiornare la pagina ad ogni ordinamento e quindi occorre utilizzare altre due variabili da passare nel link della pagina: “$colord” e “$order“. Il primo indica la colonna da ordinare ed il secondo è un valore che indica il verso dell’ordinamento. Il primo compito è quindi quello di prendere questi valori:

...
// Vedo l'ordinamento sulla colonna:
        1 ascendente - 2 discendente
$colord = $_REQUEST['colord'];
if (strlen($colord) <= 0)
 $colord = 3;
if (!is_numeric($colord))
 $colord = 3;
$order = $_REQUEST['order'];
if (strlen($order) <= 0)
 $order = 1;
if (!is_numeric($order))
 $order = 1;

$strOrd = "";
switch ($colord)
{
case 1:
 $strOrd = "articoli.CodInt";
 break;
case 2:
 $strOrd = "articoli.CodBarre";
 break;
case 3:
 $strOrd = "articoli.Descrizione";
 break;
case 4:
 $strOrd = "categorie.Categoria";
 break;
case 5:
 $strOrd = "articoli.Prezzo";
 break;
}

if (strlen($strOrd) > 0)
 if ($order > 1)
  $strOrd .= " DESC";

$strSQL = "SELECT articoli.IDArticolo, articoli.CodInt,
      articoli.CodBarre, articoli.Descrizione, ";
$strSQL .= "unimis.Sigla, categorie.Categoria, articoli.Prezzo ";
$strSQL .= "FROM (articoli LEFT JOIN unimis ON articoli.IDUM =
         unimis.IDUM) ";
$strSQL .= "LEFT JOIN categorie ON articoli.IDCategoria =
           categorie.IDCategoria";
if (strlen($strOrd) > 0)
   $strSQL .= " ORDER BY $strOrd";
...

Nel codice non mi sembra ci sia qualcosa di complicato, basta ricevere i valori e se non ci sono si impostano a 3 ed 1, ossia ordinamento ascendente sulla colonna della descrizione dell’articolo.
Nella scrittura dell’intestazione della tabella dobbiamo scrivere i dati in modo dinamico, per brevità vi inserisco soltanto il codice della prima colonna:

...
<td width="100" height="50" align="center" valign="middle"
        bgcolor="eeeeee" 
 style="color:#444444;font-family:trebuchet,Tahoma,Verdana;
        font-size:14px;font-weight:bold">
<?php

if ($colord == 1)
{
   if ($order == 1)
   {
 echo '<a href="articoli.php?pagina='.$page.'
            &colord=1&order=2" rel="nofollow"
            title="Ordine Crescente">';
 echo '<img src="immagini/asc.gif" width="12"
             height="24" border="0" alt="Ascendente"
             valign="middle">';
 echo '</a>';
   }
   else
   {
 echo '<a href="articoli.php?pagina='.$page.'
              &colord=1&order=1" rel="nofollow"
              title="Ordine Decrescente">';
 echo '<img src="immagini/desc.gif" width="12"
              height="24" border="0" alt="Ascendente"
              valign="middle">';
 echo '</a>';
   }
   echo ' <u>Codice</u>';
}
else
{
   echo '<a href="articoli.php?pagina='.$page.'
      &colord=1&order=1" rel="nofollow"
      title="Ordine Decrescente"';
   echo 'style="color:#444444;font-family:trebuchet,Tahoma,
      Verdana;font-size:14px;font-weight:bold;
      text-decoration:none">Codice</a>';
}

?>
</td>
...

Come si può notare dal codice, inserisco l’immagine giusta solo se la colonna ordinata è quella attuale, altrimenti inserisco un link con il numero di pagina, la colonna da ordinare ed il verso dell’ordinamento. Ultima cosa da fare è ricordarsi di inserire le nostre due nuove variabili nei link dei pulsanti di spostamento tra pagine, in modo tale che se mi sposto ad altri valori l’ordinamento attuale rimane.
Questo è solo un modo per risolvere il problema, magari se avete dei suggerimenti, questi saranno molto apprezzati.

<< Lezione PrecedenteInizio Corso – Lezione Successiva >>

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Published by
Giampaolo Rossi

Recent Posts

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

1 anno ago

Software di Magazzino Gratuito

MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→

1 anno ago

Mettere il PC in Lock Screen

In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…

3 anni ago

Fare il reset togliendo la corrente

In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…

3 anni ago

Prossimi Aggiornamenti Software

Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…

3 anni ago

Come Eliminare i Files in Windows

Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→

4 anni ago