Cercare la Merce nel Magazzino

Nelle scorse puntate di questo corso sulla creazione di Cerberus, ci siamo occupati di creare un database in MySQL con i nostri articoli di magazzino e della loro visualizzazione in una tabella dinamica creata con i dati contenuti nel database, connettendosi attraverso una classe in PHP da me creata che consente di velocizzare notevolmente la connessione ed il recupero dei dati.
Nell’ultima lezione avevamo visto come ordinare la merce per colonna, ora vedremo come ricercare un valore ed evidenziarlo con un altro colore.

Cerberus

Valore trovato ed evidenziato nella lista della merce

Come prima cosa inseriamo un controllo di testo in alto a destra della tabella con relativo pulsante di ricerca, in particolare effettueremo la ricerca sulla matricola, sul codice a barre e sulla descrizione dell’articolo.

...
<table width="800" align="center" cellpadding="0"
        border="0" cellspacing="0">
<tr>
  <td align="right">
  <form name="ricerca" action="#" method="post">
<?php
	$strFind = $_REQUEST['valFind'];
	if (strlen($strFind) >= 0)
 	  echo '<input type="text" name="valFind"
                value="'.$strFind.'">';
	else
	  echo '<input type="text" name="valFind">';
?>
	<input type="submit" value="Ricerca">
	<input type="hidden" name="colord"
                  value="<?php echo $colord ?>">
	<input type="hidden" name="order"
                    value="<?php echo $order ?>">
	<input type="hidden" name="phfind" value="y">
   </form>
  </td>
</tr>
</table>
...

Inseriamo il codice di una nuova tabella della stessa lunghezza della principale e senza bordo per piazzare i nostri campi di input ed ovviamente il form che consentirà di inviare i dati in essa inseriti. A questo punto verifichiamo che si tratti di una ricerca e nello stesso tempo recuperiamo l’identificativo dell’articolo trovato, se ce ne è uno.

...
$bRicerca = false;
$idArt = 0;

$strFind = $_REQUEST['phfind'];
if (strlen($strFind) > 0)
	if ($strFind == "y")
		$bRicerca = true;

if ($bRicerca)
{
   $strFind = $_REQUEST['valFind'];
   if (strlen($strFind) >= 0)
   {
	$strFind = str_replace("*", "%", $strFind);
	$strFind .= "%";
	$strArt = "SELECT IDArticolo FROM articoli
                   WHERE CodInt LIKE '$strFind' OR 
                   CodBarre LIKE '$strFind' OR
                   Descrizione LIKE '$strFind'";
	$artFind = new CMySQL($hostname, $username,
                  $password, $database);
	$artFind->OpenRowset($strArt);
	$idArt = $artFind->GetData("IDArticolo");
	if ($idArt == NULL)
	{
		$bRicerca = false;
		$idArt = 0;
	}
	}
   else
      $bRicerca = false;
}
...

Attraverso l’identificativo dell’articolo trovato, possiamo calcolare la nuova pagina da visualizzare, quella cioè nella quale risiede il nostro prodotto.

...
if ($bRicerca)
{
	$page = 0;
	for ($k = 0; $k < $tot_rows; $k++)
	{
		if ($articoli->GetData("IDArticolo") == $idArt)
			break;

		if (($k % $rows) == 0)
			$page++;

		$articoli->MoveNext();
	}

	$articoli->CloseRowset();
	$articoli->OpenRowset($strSQL);

	if ($page <= 0)
		$page = 1;
}
...

A questo punto viene visualizzata la pagina dove risiede il nostro prodotto trovato e lo evidenziamo colorando la riga di un colore verdino tenue ( ovviamente potete scegliere il colore che più vi piace per lo scopo ) per farne risaltare la visualizzazione nei confronti delle altre righe bianche.

...
$cColor = "#ffffff";
if ($bRicerca)
{
	if ($articoli->GetData("IDArticolo") == $idArt)
		$cColor = "d0e8d2";
}
...

Il codice proposto mi sembra molto comprensibile e semplice da capire, comunque ho caricato tutti i sorgenti del progetto fino a qui sviluppato sul nostro forum, nella sezione riguardante il linguaggio PHP.

<< Lezione PrecedenteInizio Corso – Lezione Successiva >>

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in PHP. Contrassegna il permalink.