Avatar billede gf Nybegynder
09. januar 2006 - 22:30 Der er 7 kommentarer og
1 løsning

Fra mysql til kalender

Hej

Jeg har en tabel "aarskalender" denne indeholder 2 felter der hedder dato og event. Dato består af et timestamp og event er en begivenhed der tilhører datoen.

I php har jeg lavet en kalender ud fra følgende princip

$aar=date('Y');
$md=date('n');

$antal=date('t',mktime(12,0,0,$md,1,$aar));

for($dag=1;$dag<=$antal;$dag++){
  echo date('D d',mktime(12,0,0,$md,$dag,$aar)) . '<br>';
}

Mit spørgsmål er så, hvordan jeg på bedste vis finder den event der hører til hver dato, uden at belaste serveren urimeligt meget og tilgodese en hurtig afvikling af scriptet.

Det skal siges, at der ikke er events til alle datoer.

nogen bud?

mvh gf
Avatar billede rednex Nybegynder
09. januar 2006 - 22:48 #1
Skal den kun udskrive de datoer hvor der er events? Og hvordan skal den gøre hvis der er flere events på en given dag?
Avatar billede gf Nybegynder
09. januar 2006 - 22:53 #2
Hej

Der er kun 1 event pr dag. Datoerne bliver allerede udskrevet, det er bare eventen jeg skal have udskrevet.

lige ny ser min kalender således ud:
------------------------------------
|dag|dato | event skal skrives her|
------------------------------------

mvh gf
Avatar billede rednex Nybegynder
09. januar 2006 - 23:03 #3
OK, så vil jeg foreslå at du laver noget i stil med det her (frit fra leveren):

$events = array();
$res = mysql_query("SELECT DATE_FORMAT(dato, '%e') AS dag, event FROM tabel WHERE DATE_FORMAT(date, '%c') = $md");
while ($row = mysql_fetch_assoc($res))
{
$events[$row['dag']] = $row['event'];
}

Så skulle $event gerne være et array hvor key'en svarer til månedens dag og indholdet er eventens navn. Det kan du så bruge når du udskriver din kalender.
Avatar billede gf Nybegynder
10. januar 2006 - 09:56 #4
Hej

Jeg får følgende fejlmeddelelse:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in .....

mit datofelt er et timestamp(14)
og indholdet er f. eks. 20050827111111

mvh gf
Avatar billede gf Nybegynder
10. januar 2006 - 12:43 #5
Hej


Så fik jeg det til, at funke, der skulle stå dato i stedet for date i :WHERE DATE_FORMAT(date, '%c')

Lige et lille tillægs spørgsmål: i min DB er der datoer fra flere forskellige år. Hvordan tilføjer jeg :

WHERE DATE_FORMAT(date, '%c') = $md AND ??? = åår$

mvh gf
Avatar billede rednex Nybegynder
10. januar 2006 - 15:11 #6
Hehe, ja det var da en blunder fra min side, ikke at tage årstallet med :o)

WHERE DATE_FORMAT(dato, '%c-%Y') = '$md-$aar'
Avatar billede gf Nybegynder
10. januar 2006 - 15:55 #7
Kanon... :)

1000 tak for hjælpen, læg lige et svar.

Mvh gf
Avatar billede rednex Nybegynder
10. januar 2006 - 16:08 #8
Will do :o)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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