Query opmaken aan de hand van checkboxes
Ik heb 1 input field: zoekterm
Ik heb 3 checkboxes genaamd: merk,type,bouwjaar
Wat is een slimme manier om mijn query op te bouwen aan de hand van de selecties ?
Ik heb nu dus 3 queries gemaakt. Deze worden uitgevoerd indien de corresponderende checkbox is aangevinkt. Per aangevinkte checkbox dus een query. Maar hier loop ik dus tegen het probleem aan dat hij uiteraard dubbele dingen vind.
Voorbeelden van de queries:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$sql_merk = mysql_query("SELECT merk, type, modeljaar FROM kavels WHERE merk LIKE '%".$zoekterm."%'");
$sql_type = mysql_query("SELECT merk, type, modeljaar FROM kavels WHERE type LIKE '%".$zoekterm."%'");
$sql_bouwjaar = mysql_query("SELECT merk, type, modeljaar FROM kavels WHERE modeljaar LIKE '%".$zoekterm."%'");
?>
$sql_merk = mysql_query("SELECT merk, type, modeljaar FROM kavels WHERE merk LIKE '%".$zoekterm."%'");
$sql_type = mysql_query("SELECT merk, type, modeljaar FROM kavels WHERE type LIKE '%".$zoekterm."%'");
$sql_bouwjaar = mysql_query("SELECT merk, type, modeljaar FROM kavels WHERE modeljaar LIKE '%".$zoekterm."%'");
?>
Ik kom er maar niet uit...
Toevoeging op 13/09/2011 11:23:08:
Ok. heb een tijdelijke oplossing. Ik trek nu alleen de id's van de gevonden objecten uit de database. Deze zet ik in een array. Deze array controleer ik op duplicaten en verwijder eventuele duplicaten.
Dan nieuwe query draaien met de waardes uit de 'cleane' array. Dit is natuurlijk niet echt een top oplossing, maar werkt wel. Alleen uit het oogpunt van niet teveel queries draaien is dit een nogal matige oplossing...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$wheres = array();
if( isset( $_POST['checkbox_merk'] ) )
{
$wheres[] = 'merk LIKE %zoekterm%';
}
if( isset( $_POST['checkbox_type'] ) )
{
$wheres[] = 'type LIKE %zoekterm%';
}
if( isset( $_POST['checkbox_bouwjaar'] ) )
{
$wheres[] = 'bouwjaar LIKE %zoekterm%';
}
// Plak alle voorwaarden aan elkaar
$where = implode( ' OR ', $wheres );
// En vervolgens
SELECT
merk,
type,
modeljaar
FROM kavels
WHERE
(
$where
)
?>
$wheres = array();
if( isset( $_POST['checkbox_merk'] ) )
{
$wheres[] = 'merk LIKE %zoekterm%';
}
if( isset( $_POST['checkbox_type'] ) )
{
$wheres[] = 'type LIKE %zoekterm%';
}
if( isset( $_POST['checkbox_bouwjaar'] ) )
{
$wheres[] = 'bouwjaar LIKE %zoekterm%';
}
// Plak alle voorwaarden aan elkaar
$where = implode( ' OR ', $wheres );
// En vervolgens
SELECT
merk,
type,
modeljaar
FROM kavels
WHERE
(
$where
)
?>
Maar jou manier is toch net ff iets strakker en minder werk. SUPER. Bedankt man. Pluim voor jou! Zat echt vast op dit stuk!
Hier mijn volledige code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
if($_SERVER['REQUEST_METHOD'] === "POST" && isset($_POST['zoeken'])) {
$zoekfunctie = true;
$zoekterm = mysql_real_escape_string($_POST['zoekterm']);
//definieer begin van query
$sql_zoek = "SELECT merk, type, modeljaar FROM kavels WHERE ";
//array aanmaken voor zoektermen MySQL query (%LIKE%)
$wheres = array();
if( isset( $_POST['merk'] ) )
{
$wheres[] = "merk LIKE '%".$zoekterm."%'";
}
if( isset( $_POST['type'] ) )
{
$wheres[] = "type LIKE '%".$zoekterm."%'";
}
if( isset( $_POST['bouwjaar'] ) )
{
$wheres[] = "modeljaar LIKE '%".$zoekterm."%'";
}
// Plak alle voorwaarden aan elkaar
$where = implode( ' OR ', $wheres );
//maak query compleet
$sql_zoek .= $where;
$res_zoek = mysql_query($sql_zoek);
while($resultaat = mysql_fetch_assoc($res_zoek)) {
echo $resultaat['merk']." ".$resultaat['type']." ".$resultaat['modeljaar'];
}
}
?>
if($_SERVER['REQUEST_METHOD'] === "POST" && isset($_POST['zoeken'])) {
$zoekfunctie = true;
$zoekterm = mysql_real_escape_string($_POST['zoekterm']);
//definieer begin van query
$sql_zoek = "SELECT merk, type, modeljaar FROM kavels WHERE ";
//array aanmaken voor zoektermen MySQL query (%LIKE%)
$wheres = array();
if( isset( $_POST['merk'] ) )
{
$wheres[] = "merk LIKE '%".$zoekterm."%'";
}
if( isset( $_POST['type'] ) )
{
$wheres[] = "type LIKE '%".$zoekterm."%'";
}
if( isset( $_POST['bouwjaar'] ) )
{
$wheres[] = "modeljaar LIKE '%".$zoekterm."%'";
}
// Plak alle voorwaarden aan elkaar
$where = implode( ' OR ', $wheres );
//maak query compleet
$sql_zoek .= $where;
$res_zoek = mysql_query($sql_zoek);
while($resultaat = mysql_fetch_assoc($res_zoek)) {
echo $resultaat['merk']." ".$resultaat['type']." ".$resultaat['modeljaar'];
}
}
?>
Toevoeging op 13/09/2011 12:17:29:
Script nog niet echt veilig uiteraard...