01. marts 2004 - 15:55Der er
21 kommentarer og 1 løsning
Søgning Mellem flere kriterier
Jeg er igang emd et script som skal kunne søge mellem flere kriterier.
På søge siden har jeg
Dato1 & Dato2 som man skal udfylde
i mysql databasen er der en masse rows i en tabel i hver row er der en fra periode og en til periode (det er rejser)
jeg har prøvet med: // AND (fra_dato >= '$aar1-$md1-$dag1') AND ('$aar2-$md2-$dag2' <= fra_dato) // AND (til_dato >= '$aar1-$md1-$dag1') AND ('$aar2-$md2-$dag2' <= til_dato)
Måske kan et par parenteser gøre underværker? Det er et forsøg værd, og så skal rækkefølgen være $md-$dag-$aar, hvis det er DATETIME du bruger :o) Det kom jeg til at bemærke... (fra_dato BETWEEN '$aar1-$md1-$dag1' AND '$aar2-$md2-$dag2') AND (til_dato BETWEEN '$aar1-$md1-$dag1' AND '$aar2-$md2-$dag2')
CREATE TABLE pakkerejse ( id int(11) NOT NULL auto_increment, fra_dato date NOT NULL default '0000-00-00', til_dato date NOT NULL default '0000-00-00', pakkepris int(11) NOT NULL default '0', pakken text NOT NULL, hotel int(11) NOT NULL default '0', personer varchar(30) NOT NULL default '', land int(11) NOT NULL default '0', verified tinyint(4) NOT NULL default '1', Destination int(11) NOT NULL default '0', dage varchar(20) NOT NULL default '', tilbud varchar(10) NOT NULL default '0', PRIMARY KEY (id) ) TYPE=MyISAM;
Det som skal være muligt at at hver pakkerejse har en periode som den køre i. og i søgningen skal det være muligt at sige eks. jeg vil godt finde en pakkerejse mellem 01-03-2004 - 08-04-2004
Jeg har bagefter prøvet at undersøge, hvad query'en skulle returnere, og det er præcist de to tupler, den skal returnere. Hvis du vil have alle de pakkerejser ud, hvor dato1 og dato2 ligger imellem fra_dato og til_dato, så skal din query se sådan ud:
SELECT * FROM pakkerejse WHERE ('2004-01-03' BETWEEN fra_dato AND til_dato) AND ('2004-08-04' BETWEEN fra_dato AND til_dato)
Jeg skal lige være sikker på, at jeg har forstået korrekt, hvad det er du vil finde ud af... Du vil gerne finde alle de pakkerejser, hvor de indtastede datoer ligger indenfor pakkerejsernes interval, ikke?
SELECT * FROM pakkerejse WHERE verified = '1' AND ('2004-05-28' BETWEEN fra_dato AND til_dato) OR ('2004-06-10' BETWEEN fra_dato AND til_dato) AND (hotel = 'hotel1') AND etc..
{ $DATOEN = "AND (('$aar1-$md1-$dag1' BETWEEN fra_dato AND til_dato) OR ('$aar2-$md2-$dag2' BETWEEN fra_dato AND til_dato))"; }
så tager den ikke datoer imellem datoerne, hvordan kan det være?
kan det være noget med det her? $kriterie = mysql_query("SELECT id, date_format(fra_dato, '%d.%m.%Y') as fra_dato, date_format(til_dato, '%d.%m.%Y') as til_dato, pakkepris, pakken, hotel, personer, land, verified, Destination, dage FROM pakkerejse
WHERE verified = 1 $LAND $DES $PRISEN $RES $DATOEN
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.