Avatar billede exp Juniormester
12. februar 2004 - 23:45 Der er 8 kommentarer og
1 løsning

Kalender - opliste events under pågældende måned

Jeg har en række events, der skal opdeles i måneder.

Brugeren kan selv vælge, for hvilket tidsrum denne vil se events, fx 5, 7 eller 13 måneder frem, i tiden.
Desuden skal events fra den foregående måned også kunne ses

Events ligger gemt i databasen med unix timestamp, og det er på denne værdi, der skal opdeles.

Tomme måneder skal også oplistes, altså hvis der en måned ikke er indtastet et event, skal der bare stå månedens navn, og under denne skal der stå "Ingen arrangementer"

Eksempel:
Brugeren vælger at se 3 måneder frem fra 12/2 - 2004

Januar:
Fodboldkamp

Februar:
Ingen arrangementer

Marts:
Hockey
Playstationaften

April:
Bagning
Skuespil
Teateraften

Maj:
DM i hækling


Nogen der kan hjælpe?
Avatar billede bromer Nybegynder
13. februar 2004 - 00:00 #1
Hvordan ser din database ud? Det burde være en rimelig simpel query..

/Bromer
Avatar billede exp Juniormester
13. februar 2004 - 00:06 #2
CREATE TABLE `silk_news` (
  `id` int(11) NOT NULL auto_increment,
  `dato` tinytext NOT NULL,
  `overskrift` text NOT NULL,
  `text` text NOT NULL,
  `sprog` char(3) NOT NULL default 'dan',
  `die` int(11) NOT NULL default '0',
  `status` int(1) NOT NULL default '1',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;

Det er kolonnen `die` der skal sorteres efter
Avatar billede bearhugx Nybegynder
13. februar 2004 - 01:50 #3
Jeg tror at den nemmeste fremgangsmåde vil være følgende :

1) find ud af hvor mange måneder at brugeren har ønsket
2) for hver måned find unix-timestamp (TS) for kl. 00:00:00 d. 1. i måned, samt TS for kl.00:00:00 den 1. i den følgende måned
3) lav det nødvendige antal queries til db'en (hvis der er ønsket 3 måneder frem bliver det i alt 5 queries)
4) lav et output for hver af disse måneder...

ELLER...

Hvis muligt, så gem datoen i et DATE felt, således at du kan spørge på date LIKE "2004-01-%%" (for januar f.eks.)
Avatar billede bearhugx Nybegynder
13. februar 2004 - 01:51 #4
Grunden til at jeg foreslår noget så drastisk som db-redesign er, at jeg kan se at du har et behov, hvor måned rent faktisk har en funktionel værdi - derfor kan man vove den påstand at det derfor bør reflekteres i db'en
Avatar billede bromer Nybegynder
13. februar 2004 - 01:53 #5
Det er faktisk alt for besværligt.. se istedet for på MONTH funktionen der findes i SQL:

http://www.mysql.com/doc/en/Date_and_time_functions.html

Så kan du nok gøre det på een query

/Bromer
Avatar billede bearhugx Nybegynder
13. februar 2004 - 02:02 #6
bromer >> he eh ... det er da også rigtigt ... Jeg havde helt glemt at man også kan lave processeringen på MySQL-siden...

Og hvis man i resultsættet - udover at sende litterale tabel-data-værdier tilbage - også sender en kolonne tilbage med månedens navn/ID, så kan man i PHP bruge det til at lave listen...

tak for at minde mig om at der er andre metoder, end lige brute force, som kan bruges i dette tilfælde :-)
Avatar billede exp Juniormester
13. februar 2004 - 09:22 #7
Okay det der siger mig bare ikke forfærdelig meget...
Avatar billede bromer Nybegynder
15. februar 2004 - 01:03 #8
SELECT overskrift,MONTH(dato) as m FROM silk_news WHERE m < 'some' AND m > 'some other' ORDER by m

Det er skrevet meget i fri hånd. For det første kan det godt være at din database brokker sig over at dit dato-felt faktisk ikke er et datofelt men en tinyint og så videre... samtidig er der ikke taget højre for år, men kun måneder... leg lidt med det.. (Find også ud af hvad INTERVAL er for noget i SQL, kan gøre din query meget pænere)

/Bromer
Avatar billede exp Juniormester
27. februar 2004 - 18:31 #9
Jeg fandt en anden løsning:

if ($order_date != $monthName[date('F',$data['die'])]) {
$order_date = $monthName[date('F',$data['die'])];
echo "<tr><td colspan=\"6\" style=\"background:#eee;\">".$order_date."</td></tr>";
}
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