Diciamo che il risultato della query " standard " visualizza delle strutture secondo determinate clausule che metto nel where.

Ma se volessi visualizzare solo i dati, in base a dei parametri di ricerca impostati dall'utente ?
( il classico form per visualizzare ad esempio gli alberghi a 3 stelle, in una determinata zona etc etc ).

Nell'esempio che sto facendo, ho 3 possibilita' di scelta che provengono da un form che l'utente puo' compilare ( con un'unico submit ) : criterio1 criterio2 criterio3.

Codice PHP:
<?php
include ("config.php");
session_start();

//recupero i valori dal form , non e' detto che siano stati tutti compilati. Ad esempio un
//utente potrebbe voler visualizzare i dati in base a 2 criteri, lasciando libero il terzo

$criterio1 $_GET["criterio1"]; 
$criterio2 $_GET["criterio2"];
$criterio3 $_GET["criterio3"];

$lamiaquery "SELECT quellochemipare 
FROM dovemipare
WHERE attributo1 = '
$criterio1' AND attributo2 = '$criterio2' AND attributo3 = '$criterio3' ";

$result mysql_query($lamiaquery) or die(mysql_error()) ;
$rows mysql_num_rows($result);

if (
rows>0) {
echo 
" <p class=centrato> $rows risultati trovati </p>";
// Qui inserisco i dati da visualizzare, questa parte non e' importante.
}

else {
echo 
"<p class="centrato"> Non ci sono dati che soddisfino tutti i requisiti di ricerca </p>";
}
exit;
?>

Ora, il problema e' questo : se uno lascia un criterio vuoto, vuol dire che non gli interessa selezionare per quel criterio. Nella mia query invece, tutti i campi devono essere uguali ai relativi criteri.

Mettendo che un utente abbia compilato solo criterio1 e 2, lasciando bianco il terzo, la mia query restituirebbe un risultato vuoto ...


Mi servirebbe una sintassi per aggirare questo problema. Nel senso :

se il campo e' riempito, allora devo verificare le occorrenze di quel valore nella tabella.
Se non e' riempito, lo tralascio, verificando pero' le altre 2 corrispondenze ..

Forse potrei mettere qualche if, ma non so proprio ...