Studio Informatico

04 mar, 2008

Ricerca in campi array con SQL e PHP

Posted by: admin In: Programmazione

Spesso è necessario memorizzare i dati come array in un campo di una tabella MySQL. La ricerca però presenta alcuni problemi, che possono essere risolti con un semplice accorgimento.
Partiamo da un esempio: una tabella “Attività” che ha tra i suoi campi la “Categoria”. I valori per Categoria possono essere “Ristorante” “Pizzeria” e “Albergo”. Un’attività può avere i requisiti per una o più categorie.

Realizziamo nel form di inserimento dati una select multipla per associare più categorie:

$categoria = explode (’|', $row['categoria']); //$row['categoria'] è il campo della tabella dove è contenuto l’array
echo ” Categoria: \n”;
echo ” <select multiple=\”multiple\” name=’categoria[]‘>\n”;

$query=”SELECT * FROM t_categorie WHERE valid=’1′ ORDER BY nome_sez”;
$result = mysql_query($query, $db);
while ($cat = mysql_fetch_array($result)) {
if (in_array($cat ["id_sez"],$categoria))
echo “<option selected=\”selected\” value=\”$cat [id_sez]\”>$cat [nome_sez]</option>\n”;
else
echo “<option value=\”$cat [id_sez]\”>$cat [nome_sez]</option>\n”;
} //fine while

echo ” </select>\n”;

 

dove t_categorie contiene le categorie, ognuna con un suo ID numerico id_sez e un nome nome_sez. Andiamo a memorizzare gli ID nel database MySQL con la funzione implode():

$categoria = implode(’|‘, $_POST['categoria']); //riga 1
$categoria = “|$categoria|“;
//riga 2

 

Importante è l’utilizzo del separatore | (pipe), la seconda riga serve per avere i separatori anche a inizio e fine stringa. Grazie alla riga 2 è possibile fare ricerche per categoria:

“SELECT * FROM t_aziende WHERE categoria LIKE ‘%|$_POST[section]|%’ “

Dove t_aziende è la tabella in cui abbiamo memorizzato i dati, e $_POST[section] è la stringa ricercata, passata tramite un classico form di ricerca.

No Responses to "Ricerca in campi array con SQL e PHP"

Comments are closed.

Studioinformatico

  • •Studio Tecnico di Ingegneria Informatica
  • •Sviluppo e programmazione
  • •Progettazione applicazioni
  • •Realizzazione siti internet
  • •Certificazione energetica
  • •Consulenza Informatica
  • •Soluzioni per Hosting
  • •Assistenza computer
  • •Corsi di Informatica

Ing. Simone Zanella
Tel. 0183.738065 - Cell. 329.9586153
Fax 0183.730220

Sede legale: via Ospedale 40, Imperia
P.IVA 01414320083
Posta Certificata PEC: simone.zanella@ingpec.eu