Query die zoekt naar waardes die groter zijn dan en kleiner zijn dan
Ik ben bezig een database te maken in php/mysql waar mijn moeder al haar bloemen met alle info kan opslaan. Tot hiertoe stond deze in Access, maar voor een eenvoudigere integratie met haar website ben ik aan een php/mysql projectje begonnen. Zo leer ik wat bij.
Ik zit met het volgende probleem: De bloeitijd van de bloemen geeft zij zo in: 8-10, wat dus betekend dat de bloem bloeit van augustus tot oktober. In Access was het altijd een probleem dat als ze zocht naar alle bloemen die bloeien in september (ze zoekt dan op 9) die 8-10 niet bij de zoekresultaten te vinden is.
Hoe kan ik dit in mysql doen?
in ieder geval bedankt
ten eerste van en tot opslaan in twee verschillende velden, daarna kun je aan je query toevoegen: $query = "SELECT .... WHERE bloeivanaf <= " . $maand . " AND bloeitot >= " . $maand
$query = "SELECT .... WHERE bloeivanaf <= " . $maand1 . " AND bloeitot >= " . $maand2."
Dat kun je oplossen met wat php-code, voordat je de query start.
Stel dat ze '9-10' ingeeft via een formulier-veld en dat deze na controle in de varabele $bloei terecht komt
Die waarde kun je dan opsplitsen en daarna in de databasequery gebruiken, bijvoorbeeld:
Code (php)
En daarna draai je de query met
"SELECT ... WHERE " . $voorwaarde;
Gewijzigd op 01/01/1970 01:00:00 door Josh
Deze tweede snap ik niet helemaal, maar ik ga eerst aan de slag, bedankt!
Hierbij nog een korte uitleg, via de opmerkingen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$bloei = "9-10"; // is input van je moeder
$bloeiarray = explode("-",$bloei); // splits de waarde op "-", alle separate waarden komen in $bloeiarray
// in dit voorbeeld heeft $bloeiarray[0] de waarde 9 en $bloeiarray[1] de waarde 10
// het kan voorkomen dat er maar 1 getal zonder '-' door je moeder was ingegeven, dan bestaat alleen $bloeiarray[0]
$voorwaarde = "bloeivanaf <= " . $bloeiarray[0] . " AND bloeitot >= ";
// controleer of er één of meerdere getallen zijn:
if(count($bloeiarray) == 1)
{
$voorwaarde .= $bloeiarray[0];
}
else
{
$voorwaarde .= $bloeiarray[1];
}
?>
$bloei = "9-10"; // is input van je moeder
$bloeiarray = explode("-",$bloei); // splits de waarde op "-", alle separate waarden komen in $bloeiarray
// in dit voorbeeld heeft $bloeiarray[0] de waarde 9 en $bloeiarray[1] de waarde 10
// het kan voorkomen dat er maar 1 getal zonder '-' door je moeder was ingegeven, dan bestaat alleen $bloeiarray[0]
$voorwaarde = "bloeivanaf <= " . $bloeiarray[0] . " AND bloeitot >= ";
// controleer of er één of meerdere getallen zijn:
if(count($bloeiarray) == 1)
{
$voorwaarde .= $bloeiarray[0];
}
else
{
$voorwaarde .= $bloeiarray[1];
}
?>
En daarna draai je de query met
"SELECT ... WHERE " . $voorwaarde;
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
list($bloeitijd1, $bloeitijd2) = split ("-", $_POST['bloeitijd']);
if ($bloeitijd2 == "") {
$query = "SELECT * FROM bloemen WHERE bloeivanaf <= " . $bloeitijd1 . " AND bloeitot >= " . $bloeitijd1."";
} else {
$query = "SELECT * FROM bloemen WHERE bloeivanaf <= " . $bloeitijd1 . " AND bloeitot >= " . $bloeitijd2."";
}
?>
list($bloeitijd1, $bloeitijd2) = split ("-", $_POST['bloeitijd']);
if ($bloeitijd2 == "") {
$query = "SELECT * FROM bloemen WHERE bloeivanaf <= " . $bloeitijd1 . " AND bloeitot >= " . $bloeitijd1."";
} else {
$query = "SELECT * FROM bloemen WHERE bloeivanaf <= " . $bloeitijd1 . " AND bloeitot >= " . $bloeitijd2."";
}
?>
dit heeft als nadeel dat als er enkel een 9 is ingegeven deze melding komt:
Deze melding is wel weg als ik de errorreporting afzet. Maar voor de rest zie ik qua werking geen verschil. Of heb ik het mis?
'trying to learn'
Gewijzigd op 01/01/1970 01:00:00 door Hans Vereyken
if ($bloeitijd2 == "")
aan te passen naar
if (isset($bloeitijd2) && $bloeitijd2 == "")
Helpt dat?
(ik probeer ook maar wat)