Hallo,

Ik heb een tabel met tarieven. In deze tabel kan men een tarief per periode opslaan. Dus bijvoorbeeld begin_periode 11-12-2008 en eind_periode 31-12-2008. Het tarief in deze periode is bijvoorbeeld 150 euro. Dan wil ik dus met een query een result krijgen met het tarief van 150 euro indien je een datum gebruikt die binnen deze periode valt.

Daaraan wil ik nog toevoegen dat ik de periodes opsla als VARCHAR ipv als DATE omdt ik het vervelend vind dat dateformat standaard verkeerd staat. Indien het niet kan zonder DATE dan zal ik het toch moeten opslaan als date, maar liever niet.

Goed, ik heb al een code:
<?php
$q= mysql_query("
	SELECT 
		tarief_id, 
		tarief, 
		DATE_FORMAT(begin_periode,'%d-%m-%Y'), 
		DATE_FORMAT(eind_periode,'%d-%m-%Y') 
	FROM
		vliegtickets AS v
	WHERE
		tarief_id = '". mysql_real_escape_string($_GET['vakantieplaats'])."' 
	AND 
		'".mysql_real_escape_string($_GET['datumvanvertrek'])."'
	BETWEEN 
		begin_periode
	AND
		eind_periode
");
?>


Alleen ik krijg geen result. Dit terwijl de datumvanvertrek die ik test wel in een periode valt.

Alvast bedankt :)
Daaraan wil ik nog toevoegen dat ik de periodes opsla als VARCHAR ipv als DATE omdt ik het vervelend vind dat dateformat standaard verkeerd staat.
En nu vind je het gek dat jouw query niet werkt?

Sorry dat ik het zeg, maar dit topic is het bewijs dat domme vragen dus tóch bestaan.

De oplossing ken je, ga datums als datums opslaan en niet als een waardeloos stuk onzin waar je niets aan hebt.
Jezus, beetje vriendelijk mag hoor. Bovendien probeer ik ook nog een hoop uit voordat ik iets ga vragen. Bovendien had ik zelf al bedacht het om te zetten, echter krijg ik ook daarmee geen resultaat.

Maar goed, ik zoek het zelf wel uit dan.
Gebruik gewoon DATE, aangezien varchar vergelijkingen anders gaan dan jij wilt. Als jij denkt dat de DATE verkeerd wordt weergeven wordt op je site dan converteer je die naar een formaat die jij wel wilt. En dit doe je in PHP zelf, niet naar de database toe aangezien je er wilt mee vergelijken.
varchar vergelijkingen gaan van links naar rechts en simpel weg controleert of deze waarden dezelfde zijn, hoger of lager. Terwijl vergelijken met DATE's kijkt naar jaar-maand-dag in die volgorde en dan kijken of iets hetzelfde is, hoger of lager.

Verder opzich kan ik het wel vinden met pgFrank's post, ik kan best begrijpen dat jij misschien een beginner bent en dergelijke maar in feite moet je wel wat verdiepen in de materie voordat je begint met het schrijven van zulke dingen. Ik heb genoeg mensen gezien namelijk in het bedrijfsleven die er eigenlijk ook niks van snappen maar wat aankloten om het wat bot neer te zetten, en in principe heb je niks aan zulke mensen. Constant uitleggen waarom ze het fout doen en ze verbeteren, het kost teveel tijd zeg maar.
@Vlerknozem,

Neem de reacties van Frank altijd met een korreltje zout. Wat hij zegt is meestal waar, de manier waarop hij het zegt.......

Groeten
KLaasjan
Goed goed... Hij heeft wel gelijk opzich. Maar goed, weer ontopic.

Ik heb in de database de boel veranderd naar date(). Helaas werkt de query nog niet naar behoren. Misschien ligt het aan BETWEEN.
doe eens:


<?php
$sql ="
    SELECT 
        tarief_id, 
        tarief, 
        DATE_FORMAT(begin_periode,'%d-%m-%Y'), 
        DATE_FORMAT(eind_periode,'%d-%m-%Y') 
    FROM
        vliegtickets AS v
    WHERE
        tarief_id = '". mysql_real_escape_string($_GET['vakantieplaats'])."' 
    AND 
        '".mysql_real_escape_string($_GET['datumvanvertrek'])."'
    BETWEEN 
        begin_periode
    AND
        eind_periode";
echo $sql;
$result = mysql_query($sql);
?>



wat wordt er geechod??
Tip: Geef beide periodes die je met DATE_FORMAT opmaakt, een alias. Dat maakt het verwerken in PHP eenvoudiger.

DATE_FORMAT(begin_periode,'%d-%m-%Y') AS nl_begin_periode,
DATE_FORMAT(eind_periode,'%d-%m-%Y') AS nl_eind_periode

En let erop dat een alias altijd een andere naam heeft als het origineel, anders ga je weer andere problemen krijgen. De alias heeft namelijk een andere inhoud dan het origineel.

Reageren