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.
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 Precedente – Inizio Corso – Lezione Successiva >>
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→