Query probleempje
Ik ben met een zoekfunctie bezig, waarin ik kan zoeken op leeftijd, geslacht, en naam. De naam moet gechecked worden in 2 velden: profielnaam en voornaam, echter is het zo dat ik het niet voor elkaar krijg om alleen de actieve leden te totn i.p.v. ale leden. De (gegenereerde) query ziet er als vogt uit:
SELECT * FROM profielen
WHERE profielnaam LIKE '%Bas%'
OR voornaam LIKE '%Bas%'
AND DATE(geboortedatum) BETWEEN 2008-07-23
AND 1983-07-23 AND geslacht = 'man'
AND actief = 1
Maar omdat ik in het begin OR gebruik, lijkt het wel:
Of SQL denkt na het vinden van de naam in 1 van de 2 velden, dat ie de AND's niet meer hoeft te doen omdat er OR in voorkomt..
Iemand suggesties?
PS heb ook dit geprobeerd:
SELECT * FROM profielen
WHERE profielnaam OR voornaam LIKE '%Bas%'
AND DATE(geboortedatum) BETWEEN 2008-07-23
AND 1983-07-23 AND geslacht = 'man'
AND actief = 1
Kortom: De query werkt, maar doet NIKS met de [AND actief = 1]
(.... OR ...) AND ....
of
..... OR ( .... AND .... )
SELECT * FROM profielen WHERE (voornaam OR profielnaam) LIKE '%Bas%' AND actief = 1
krijg ik geen rijen terug :S
Super bedankt!!! (k)
PS: sorry, had m'n vorige bericht moeten editten.... exuses!
Gewijzigd op 01/01/1970 01:00:00 door Bas Matthee
zo:
SELECT * FROM profielen WHERE (voornaam LIKE '%Bas%' OR profielnaam LIKE '%Bas%') AND actief = 1
Doe je dat niet, dan wordt het een rekensom:
2008 minus 07 minus 23....
SELECT * FROM profielen
WHERE (voornaam LIKE '%Tha%' OR profielnaam LIKE '%Tha%')
AND DATE(geboortedatum) BETWEEN '2008-07-23' AND '1983-07-23'
AND geslacht = 'man'
AND actief = 1
Help?
BTW: dit is de opbouw 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
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
<?php
$query = "SELECT * FROM profielen WHERE (voornaam LIKE '%".$profielnaam."%' OR profielnaam LIKE '%".$profielnaam."%')";
if (isset($_POST['leeftijd']) && $_POST['leeftijd'] != 0) {
$datum_vandaag = date('Y-m-d');
$datum_leeftijd = date('Y') - $_POST['leeftijd'] ;
$datum_leeftijd = $datum_leeftijd . date('-m-d');
$query .= " AND DATE(geboortedatum) BETWEEN '".$datum_vandaag."' AND '".$datum_leeftijd ."' ";
}
if (isset($_POST['geslacht_1']) && !isset($_POST['geslacht_2'])) {
$query .= " AND geslacht = 'man'";
} elseif (!isset($_POST['geslacht_1']) && isset($_POST['geslacht_2'])) {
$query .= " AND geslacht = 'vrouw'";
}
$query .= ' AND actief = 1';
?>
$query = "SELECT * FROM profielen WHERE (voornaam LIKE '%".$profielnaam."%' OR profielnaam LIKE '%".$profielnaam."%')";
if (isset($_POST['leeftijd']) && $_POST['leeftijd'] != 0) {
$datum_vandaag = date('Y-m-d');
$datum_leeftijd = date('Y') - $_POST['leeftijd'] ;
$datum_leeftijd = $datum_leeftijd . date('-m-d');
$query .= " AND DATE(geboortedatum) BETWEEN '".$datum_vandaag."' AND '".$datum_leeftijd ."' ";
}
if (isset($_POST['geslacht_1']) && !isset($_POST['geslacht_2'])) {
$query .= " AND geslacht = 'man'";
} elseif (!isset($_POST['geslacht_1']) && isset($_POST['geslacht_2'])) {
$query .= " AND geslacht = 'vrouw'";
}
$query .= ' AND actief = 1';
?>
Gewijzigd op 01/01/1970 01:00:00 door Bas Matthee
Je gebruikt wel een DATE veld in de database?
http://www.jeleukstefotoshoot.nl/SITE/profiel.php?onderdeel=portfolio_overzicht
Daar staat het resultaat, rechts zoeken, dan kom je bij de results. Ik heb de query even ge-echoot
Daar staat het resultaat, rechts zoeken, dan kom je bij de results. Ik heb de query even ge-echoot
Gewijzigd op 01/01/1970 01:00:00 door Bas Matthee
SELECT * FROM profielen WHERE (voornaam LIKE '%'bas%' OR profielnaam LIKE '%'bas%') AND DATE(geboortedatum) BETWEEN '2008-07-23' AND '1983-07-23' AND actief = 1
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/jeleukstefotoshoot.nl/httpdocs/SITE/modules/zoeken/zoekresultaten.php on line 40
edit: zie het al. ik heb de datums omgedraaid, nu werkt het, bedankt iig!
Gewijzigd op 01/01/1970 01:00:00 door Bas Matthee
Bas Matthee schreef op 23.07.2008 13:08:
in jou geval heb je een quote gebruikt
Nee hoor.
Notice: Undefined variable: datum_van in /var/www/vhosts/jeleukstefotoshoot.nl/httpdocs/SITE/modules/zoeken/zoekresultaten.php on line 29
Notice: Undefined variable: datum_tot in /var/www/vhosts/jeleukstefotoshoot.nl/httpdocs/SITE/modules/zoeken/zoekresultaten.php on line 29
die laatste errors zijn van NA mijn post, toen ben ik verder egaan. Heb em helemaal omgegooid, alles werkt nu, heb er paginanummering bij gedaan, etc..