Query probleempje
Beste mensen,
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]
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]
Bij OR en AND haken gebruiken.
(.... OR ...) AND ....
of
..... OR ( .... AND .... )
(.... OR ...) AND ....
of
..... OR ( .... AND .... )
Maar as ik em ff simpeltjes test, zo dus:
SELECT * FROM profielen WHERE (voornaam OR profielnaam) LIKE '%Bas%' AND actief = 1
krijg ik geen rijen terug :S
SELECT * FROM profielen WHERE (voornaam OR profielnaam) LIKE '%Bas%' AND actief = 1
krijg ik geen rijen terug :S
Heb het al! SELECT * FROM profielen WHERE (voornaam LIKE '%%' OR profielnaam LIKE '%%') AND actief = 1
Super bedankt!!! (k)
PS: sorry, had m'n vorige bericht moeten editten.... exuses!
Super bedankt!!! (k)
PS: sorry, had m'n vorige bericht moeten editten.... exuses!
Gewijzigd op 01/01/1970 01:00:00 door Bas Matthee
nee dat werkt ook niet.
zo:
SELECT * FROM profielen WHERE (voornaam LIKE '%Bas%' OR profielnaam LIKE '%Bas%') AND actief = 1
zo:
SELECT * FROM profielen WHERE (voornaam LIKE '%Bas%' OR profielnaam LIKE '%Bas%') AND actief = 1
Een datum moet je als string behandelen en dus tussen quotes zetten:
Doe je dat niet, dan wordt het een rekensom:
2008 minus 07 minus 23....
Doe je dat niet, dan wordt het een rekensom:
2008 minus 07 minus 23....
Dit is nu m'n query, echter is het zo dat er nu helemaal geen resultaten meer uit de DB komen :S De datum van het profiel in DIT geval is 1984-04-27..
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:
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
Echo de mysql_error() eens, Er zit nog steeds een fout in.
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
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
in jou geval heb je een quote gebruikt, heb die check er nog niet in zitten. je hebt gezocht op: 'bas en niet op bas, maar zonder quote, geen error
edit: zie het al. ik heb de datums omgedraaid, nu werkt het, bedankt iig!
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:
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..




