Ho una form con 6 campi, come creo la query combinata per estrarre i record se ad esempio non compilo uno dei campi del form?
Ho una form con 6 campi, come creo la query combinata per estrarre i record se ad esempio non compilo uno dei campi del form?
la form contiene i campi:
- data dal;
- data al;
- provincia;
- comune;
- num. protocollo;
- ...
mettiamo che un'utente faccia una ricerca scegliendo i campi campi data e provincia;
un altro utente invece su provincia e comune;
oppure mettiamo il caso che venga scelta la ricerca soltanto per num. protocollo, come faccio a passargli l'attributo AND nell'sql non sapendo quali sono i campi e quindi dove posizionare l'AND?
Credo di non aver ancora ben capito cosa tu intenda...Originariamente inviato da Bartjsp
come faccio a passargli l'attributo AND nell'sql non sapendo quali sono i campi e quindi dove posizionare l'AND?
Però ci provo...
La query può essere "costruita" durante l'esecuzione del codice, non deve per forza essere statica.
Mi spiego:
- dichiari una stringa che chiami $where
- dentro questa stringa ci scrivi le varie condizioni:
-- es. $where="data_dal='20080210'";
-- es. $where.=" AND comune='Milano'";
- componi la query: $query="SELECT * FROM XXX WHERE ".$where;
Spero di aver capito giusto cosa richiedevi.
Ma se la data non c'è e la ricerca avviene solo per comune? lo script che hai scritto penso vada in errore. Ho cmq risolto in quest'altra maniera:
funziona ma l'unico problema è che se aggiungo questo pezzo:Codice PHP:
$query = "SELECT * FROM tabella WHERE ";
$condizioni = array();
if(!empty($_POST['campo1']))
$condizioni[] = "campo1 = '" . $_POST['campo1'] . "'";
if(!empty($_POST['campo2']))
$condizioni[] = "campo2 = '" . $_POST['campo2'] . "'";
if(!empty($_POST['campo3']))
$condizioni[] = "campo3 = '" . $_POST['campo3'] . "'";
$query = $query . implode(" AND ", $condizioni);
$result = mysql_query($query);
non solo non mi trova nulla, ma mi restituisce il seguente errore:Codice PHP:
if(!empty($_REQUEST['data_ingresso_dal']))
$data_dal = english_date($_REQUEST['data_ingresso_dal']);
$condizioni[] = "data_ingresso >= '" . $data_dal . "'";
if(!empty($_REQUEST['data_ingresso_al']))
$data_al = english_date($_REQUEST['data_ingresso_al']);
$condizioni[] = "data_ingresso <= '" . $data_al . "'";
Notice: Undefined variable: data_dal in c:\www\viavas\ricerca_decreti.php on line 11
Notice: Undefined variable: data_al in c:\www\viavas\ricerca_decreti.php on line 15
Il primo pezzo è esattamente quello che ti dicevo io scritto un pochino meglio in codice, i miei erano esempi!![]()
Circa il secondo pezzo il problema sta nella gestione delle date in PHP, ma lì non ne so molto, mi spiace, cerca sul forum che avevo letto di date un po' di tempo fa!