Select sql cu filtrare multipla
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
sterica
- Mesaje: 285
Select sql cu filtrare multipla
Salutare,
Am urmatorul table sql:
Cod: Selectaţi tot
tbl_masini
+----+-------+-------------+---------+
| ID | MODEL | COMBUSTIBIL | STARE |
+----+-------+-------------+---------+
| 1 | VW | Benzina | Activ |
| 2 | VW | Motorina | Activ |
| 3 | VW | Benzina | Inactiv |
| 4 | VW | Motorina | Inactiv |
| 5 | Dacia | Benzina | Activ |
| 6 | Dacia | Motorina | Activ |
| 7 | Dacia | Benzina | Inactiv |
| 8 | Dacia | Motorina | Inactiv |
+----+-------+-------------+---------+
si urmatoarele selecturi:
Cod: Selectaţi tot
<form action="" method="POST">
<select name="model">
<option selected="">TOATE MODELELE</option>
<option value="VW">Volkswagen</option>
<option value="Dacia">Dacia</option>
</select>
<select name="combustibil">
<option selected="">TOTI COMBUSTIBILII</option>
<option value="benzina">Benzina</option>
<option value="motorina">Motorina</option>
</select>
<select name="stare">
<option selected="">TOATE STARILE</option>
<option value="activ">Activ</option>
<option value="inactiv">Inactiv</option>
</select>
</form>
Cum pot exporta intr-un tabel html valorile din tabela sql dupa cum urmeaza:
la deschiderea paginii web toate selecturile vor fi setate pe: "TOATE MODELELE, TOTI COMBUSTIBILII si TOATE STARILE", in acest caz vor fi afisate toate valorile din tabela. Aici fac un query:
Pentru filtrul pe modelul masinii fac un query:
Cod: Selectaţi tot
$sql = "SELECT * FROM tbl_masini WHERE MODEL=$_POST['model']"
Problema mea apare cand incep sa fac diferite combinatii intre filtre.
Cum fac interogarile in asa fel incat sa reactioneaze la valorile selecturilor?
Multumesc!
MarPlo
Mesaje: 4343
Salut
Vezi daca te ajuta acest cod:
Cod: Selectaţi tot
$where =[];
if(isset($_POST['model'])) $where[]="MODEL='". $_POST['model'] ."'";
if(isset($_POST['combustibil'])) $where[]="COMBUSTIBIL='". $_POST['combustibil'] ."'";
if(isset($_POST['stare'])) $where[]="STARE='". $_POST['stare'] ."'";
$sql ="SELECT * FROM tbl_masini WHERE ". implode(' AND ', $where);
echo $sql; //for test
sterica
Mesaje: 285
Revin cu o precizare, cand se deschide pentru prima data pagina in aceata configuratie a interogarilor nu imi sunt afisate valorile. Insa doresc sa fie afisate toate valorile si sa le filtrez ulterior:
In aceasta configuratie filtre functioneaza numai daca sunt selectate toate, dar doresc sa fac o filtrare numai pe un select si restul sa afiseze toate valorile
Ma gandesc sa adaug in If-uri WHERE, dar nu stiu cum sa adaug AND-urile.
Cod: Selectaţi tot
$where =[];
if(isset($_POST['model'])) $where[]="WHERE MODEL='". $_POST['model'] ."'";
if(isset($_POST['combustibil'])) $where[]="WHERE COMBUSTIBIL='". $_POST['combustibil'] ."'";
if(isset($_POST['stare'])) $where[]="STARE='". $_POST['stare'] ."'";
$sql ="SELECT * FROM tbl_masini";
echo $sql; //for test
Multumesc!
MarPlo
Mesaje: 4343
Vezi daca functioneaza asa, AND-urile se adauga la implode():
Cod: Selectaţi tot
$where =[];
if(isset($_POST['model'])) $where[]="MODEL='". $_POST['model'] ."'";
if(isset($_POST['combustibil'])) $where[]="COMBUSTIBIL='". $_POST['combustibil'] ."'";
if(isset($_POST['stare'])) $where[]="STARE='". $_POST['stare'] ."'";
$where = count($where)<1 ?'' : 'WHERE '. implode(' AND ', $where);
$sql ="SELECT * FROM tbl_masini $where";
echo $sql; //for test
sterica
Mesaje: 285
multumesc mult de ajutorul acordat
Subiecte similare
-
Setare valori din array in select tag
JavaScript - jQuery - Ajax
Primul mesaj
Salut am un array cu orele de functionare
$data = array (
'0400' => '04:00 AM',
'0430' => '04:30 AM',
'0500' => '05:00 AM',
'0530'...
Ultimul mesaj
Testeaza urmatorul cod.
Daca ceva mai trebuie schimbat, incearca si tu sa modifici dupa cum stii, in functie de ce vrei sa obtii.
Open:...