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 ...

Rispondi quotando