Avatar billede Slettet bruger
30. september 2004 - 15:42 Der er 10 kommentarer og
1 løsning

Finde arrangementer der finder sted i dag

Hej!

Jeg har 2 datoer, begge af typen datetime, der hedder start og slut.

De fortæller om et arrangement, der f.eks. kunne strække sig fra 17. oktober 2004 til 22. oktober 2004.

Jeg har så en kalender, hvor man kan klikke sig ind på vilkårlige dage.

Denne kalender giver 3 variabler, $aar, $maaned og $dag.

Ud fra dem, hvordan tjekker jeg så om der er et arrangement igang?

Hvis jeg f.eks. kalder 19. oktober op, så skal den skrive ovennævnte arrangement ud, men også arrangementer der kun løber den. 19 oktober (altså over en dag).

Der er ikke nogen timeangivelse nogen steder, kun år, måned og dag.

Det må være noget med at sige

WHERE idag BETWEEN start AND slut

Men kan ikke lige regne den ud.
Avatar billede tofte Juniormester
30. september 2004 - 15:45 #1
kan du ikke bruge
WHERE start<= date <=slut
Avatar billede tofte Juniormester
30. september 2004 - 15:46 #2
kan ikke lige huske om date giver datoen eller du skal bruge date() jeg er ikke så god til mySQL syntax
Avatar billede fennec Nybegynder
30. september 2004 - 15:56 #3
DATE() virker først i MySQL 4.1.1.

Har du en tidligere version skal du bruge CURDATE() eller NOW(), afhængig af om der skal timer/min med.


WHERE start<= CURDATE() <=slut

eller:
WHERE CURDATE() BETWEEN start AND slut
Avatar billede fennec Nybegynder
30. september 2004 - 15:57 #4
WHERE start<= CURDATE() <=slut

Det skal være:
WHERE start <= CURDATE() and CURDATE() <= slut
Avatar billede Slettet bruger
30. september 2004 - 16:00 #5
Jamen jeg vil ikke have datoen i dag, men den dato der kommer fra $aar, $maaned og $dag
Avatar billede Slettet bruger
30. september 2004 - 16:05 #6
Det jeg gerne vil er noget i stil med det her:

SELECT * FROM klub_kalender WHERE ("2004-10-17 23:59:59") <= start AND ("2004-10-17 23:59:59") <= slut

Men uden minuttallet
Avatar billede fennec Nybegynder
30. september 2004 - 16:09 #7
Jeg vil næsten tro du kan smide det ind på denne måde i PHP.

"select * from DinTabel where start <= '$aa-$maaned-$dag' and '$aa-$maaned-$dag' <= slut"
Avatar billede Slettet bruger
30. september 2004 - 16:15 #8
Som det er nu virker

SELECT * FROM klub_kalender WHERE start <=("2004-8-3") AND slut >= ("2004-8-3")

næsten...den finder dog ikke arrangementer der starter f.eks. 3. august kl. 12
Avatar billede Slettet bruger
30. september 2004 - 16:16 #9
Men det er jo fordi slut er samme dag :/
Avatar billede Slettet bruger
30. september 2004 - 16:30 #10
Jeg fandt vist nok ud af det :)

if(strlen($maaned) == 1) {
$maaned = '0' .$maaned;
}

$igaar = date("Y-m-d", mktime(0, 0, 0, $maaned , $dag+1, $aar)) . ' 00:00:00';
$idag = $aar . '-' . $maaned . '-' . $dag . ' 00:00:00';

$sql = 'SELECT * FROM ' . $kundenavn . '_kalender WHERE start < ("' . $igaar . '") AND slut >= ("' . $idag . '")';
Avatar billede Slettet bruger
02. oktober 2004 - 23:11 #11
.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester