Query die zoekt naar waardes die groter zijn dan en kleiner zijn dan

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hans Vereyken

Hans Vereyken

02/08/2007 16:18:00
Quote Anchor link
Hallo, hier ben ik alweer met een vraag, ooit zal ik het wel zelf kunnen :-)

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
 
PHP hulp

PHP hulp

29/03/2024 16:24:02
 
Josh

Josh

02/08/2007 16:28:00
Quote Anchor link
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
 
Hans Vereyken

Hans Vereyken

02/08/2007 17:11:00
Quote Anchor link
Ok, geweldig. Nog een bijkomende vraag: als mijn moeder dan zoekt op 9-10, naar planten die dus in deze twee maanden bloeien, is deze query dan juist?:

$query = "SELECT .... WHERE bloeivanaf <= " . $maand1 . " AND bloeitot >= " . $maand2."
 
Josh

Josh

02/08/2007 17:25:00
Quote Anchor link
nee.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$bloeiarray
= explode("-",$bloei);
$voorwaarde = "bloeivanaf <= " . $bloeiarray[0] . " AND bloeitot >= ";
if(count($bloeiarray) == 1)
{

   $voorwaarde .= $bloeiarray[0];
}

else
{
   $voorwaarde .= $bloeiarray[1];
}

?>

En daarna draai je de query met
"SELECT ... WHERE " . $voorwaarde;
Gewijzigd op 01/01/1970 01:00:00 door Josh
 
Hans Vereyken

Hans Vereyken

02/08/2007 17:29:00
Quote Anchor link
Deze tweede snap ik niet helemaal, maar ik ga eerst aan de slag, bedankt!
 
Josh

Josh

02/08/2007 17:40:00
Quote Anchor link
Kan zijn dat je op wat foutjes van mij aan het studeren bent geweest, heb het aangepast...

Hierbij nog een korte uitleg, via de opmerkingen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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];
}

?>

En daarna draai je de query met
"SELECT ... WHERE " . $voorwaarde;
 
Hans Vereyken

Hans Vereyken

02/08/2007 18:01:00
Quote Anchor link
Ah, dit begrijp ik. Maar nu versta ik niet wat er fout was met mijn vorige query. Dit was de code die ik had:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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."";
}

?>


dit heeft als nadeel dat als er enkel een 9 is ingegeven deze melding komt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Notice: Undefined offset: 1 in C:\xxx\xxx.php on line xxx

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
 
Josh

Josh

02/08/2007 18:11:00
Quote Anchor link
Probeer deze regel:
if ($bloeitijd2 == "")

aan te passen naar
if (isset($bloeitijd2) && $bloeitijd2 == "")

Helpt dat?

(ik probeer ook maar wat)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.