Originariamente inviato da metatad
Sto realizzando un motore di ricerca interno, che consenta all'utente di cercare tra le news presenti nel db.
Ciascuna news ha quattro tipologie di attribuiti possibili:
- area
- tag
- kind
- deadline
Io vorrei quindi dare la possibilità di effettuare ricerche, combinando variamente questi attributi, scelti attraverso quattro select; ad esempio, l'utente può fare una ricerca impostando come valore Europa (area) e Festival (kind), e così via.
Il problema è la costruzione della query. Le combinazioni possibili, infatti, sono tante:
4, se sceglie un solo attributo, + altre 6 se ne sceglie due, + altre 4 se ne sceglie 3, + una se sceglie tutti gli attributi possibili.
Risultato, 18 possibilità diverse.
Ovviamente, posso realizzare un costrutto con 18 if, e conseguenti 18 diverse query, però prima di farlo vorrei capire se c'è modo di ottenere lo stesso risultato senza questo... sperpetuo!
Qualche idea e/o suggerimento?
codice:
<?php
  $where_clause = "";
  $where_clause .= ((isset($_POST['area']) && $_POST['area'] != "") ? ($where_clause != "" ? " AND area={'$_POST[area]'}" : "area={'$_POST[area]'}") : "");
?>
poi potresti anche creare sta cosa dentro un foreach su $_POST oppure, se la struttura del form non lo dovesse consentire, su un array contenente i nomi delle colonne in cui cercare.

La query poi sarà una cosa del genere:
Codice PHP:
$sql "SELECT * FROM tabella_eventi".(($where_clause != "") ? " WHERE ".$where_clause ""