Avatar billede haolan Nybegynder
16. april 2007 - 21:08 Der er 13 kommentarer og
1 løsning

Årsvisning med opdeling efter måned

Hej eksperter

jeg er ved at lave noget kalenderagtigt værk, hvor jeg i min årsvisning skal kunne se nogle forskellige "events" på en lang række.

Men jeg kunne godt tænke mig at lave nogle overskrifter for hver måned så det ville komme til at se ud som fx:

Januar
1. Event1
5. Event2
10. Event3

Februar
Ingen events

Marts
4. Event 4

osv...

Er der ikke en smart måde jeg kan stille det op, så jeg kan nøjes med at kalde mine events ud på én gang og så sorterer dem i månederne som vist ovenfor.?
Avatar billede hmm10 Nybegynder
16. april 2007 - 21:29 #1
Måske kan du hente inspiration her: http://www.eksperten.dk/spm/737793. Og så tilføje et array med dine events?
Avatar billede haolan Nybegynder
16. april 2007 - 22:12 #2
njaa.. Det er ikke helt det samme..
Jeg skal jo kun vise et år ad gangen og så med de underliggende event..

Events finder jeg ved at trække dem ud fra en database og hvert event har naturligvis en dato
Avatar billede johan.o Nybegynder
16. april 2007 - 22:54 #3
Ligger dine datoer som unix timestamps i databasen ?

Mvh. Johan
Avatar billede haolan Nybegynder
16. april 2007 - 22:55 #4
jeps de ligger i en tinytext
Avatar billede johan.o Nybegynder
16. april 2007 - 23:17 #5
Okay ! Lad os sige at du vil vise det år som vi er i nu som default....

..så laver vi et link til denne side der hedder f.eks. dinside.php?var=0

var=0 betyder at der skal lægges 0 til det aktuelle år, altså der er i år !

Så først 'henter' vi vores variabel -->

$oVar=$_GET['var'];

Så kan du lave en query som finder alle de timestamps der er i år og sortere dem således at de starter fra først på året og slutter sidst altså med det mindste timestamp først....evt. sådan her -->

$firstJan=mktime(0, 0, 0, 1, 1, date("Y")+$oVar);
$lastDec=mktime(23, 59, 59, 31, 12, date("Y")+$oVar);

$query=mysql_query("SELECT * FROM tabel WHERE timestamp>$firstJan AND timestamp<$lastDec" ORDER BY timestamp ASC");

Når du så løber dem igennem kan du holde øje med om måned navnet ændrer sig...

echo strftime("%Y", mktime(0, 0, 0, 1, 1, date("Y")+$oVar))."<br><br>";
$month="";
while($row=mysql_fetch_assoc($query)) {
if($month!=strftime("%B", $row[timestamp])) {
  $month=strftime("%B", $row[timestamp]);
  echo "<br>".$month."<br>"; }
echo strftime("%d", $row[timestamp])." ".$row[event]."<br>"; }

Hvis du så vil vise tidligere år eller kommende år linker du til -->

<a href="minside.php?var=".++$oVar>Næste år</a>
<a href="minside.php?var=".--$oVar>Forrige år</a>

Lad høre om det hjælper noget :)

Mvh. Johan
Avatar billede nixir Nybegynder
17. april 2007 - 22:11 #6
Synes dette hænger lidt sammen med den anden tråd du har kørende :)

Jeg vil råde dig til igen ikke at bruge udgangspunkt i i år ... benyt istedet samme metode som i den anden tråd, her definerer du blot kun year i din url (istedet for var i johan.o's eksempel)

Sikker på du kan få johan.o til at skrive sit eksempel om, eller kan jeg godt - sku ikke tage så lang tid.

Mvh.
Avatar billede haolan Nybegynder
20. april 2007 - 14:07 #7
Igen her Johan O :) en idé til hvordan man kan gøre hvis vi antager at man har en $_GET['year'] istedet for en var? ville være super fedt.. :)
Avatar billede johan.o Nybegynder
20. april 2007 - 17:18 #8
Ikke testet men måske..

<?php

$oYear=$_GET['year'];

$firstJan=mktime(0, 0, 0, 1, 1, $oYear);
$lastDec=mktime(23, 59, 59, 31, 12, $oYear);

$query=mysql_query("SELECT * FROM tabel WHERE timestamp>".$firstJan." AND timestamp<".$lastDec." ORDER BY timestamp ASC");

$oOutput="<h1>".$oYear."</h1>";
$oMonth="";
while($row=mysql_fetch_assoc($query)) {
if($oMonth!=strftime("%B", $row[timestamp])) {
  $oMonth=strftime("%B", $row[timestamp]);
  $oOutput.="<h2>".$oMonth."</h2>"; }
$oOutput.="<span>".strftime("%d", $row[timestamp])." ".$row[event]."</span><br>"; }

$oOutput.="<a href='".$_SERVER['php_self']."?year=".($oYear+1)."'>Næste år</a><br>";
$oOutput.="<a href='".$_SERVER['php_self']."?year=".($oYear-1)."'>Forrige år</a>";

echo $oOutput;

?>

..måske..

Mvh. Johan
Avatar billede haolan Nybegynder
20. april 2007 - 17:36 #9
ved ikke lige hvad der er gal.. men 2005 - 2006 og 2007 kalder de samme data frem :S
Avatar billede haolan Nybegynder
20. april 2007 - 17:40 #10
Ved ikke om det kan hjælpe men:

$firstJan skriver: 01/01 2007
$lastDec skriver: 12/07 2009
Avatar billede johan.o Nybegynder
20. april 2007 - 17:47 #11
He he..ja der skal lige byttes om i denne linje..

$lastDec=mktime(23, 59, 59, 12, 31, $oYear);

Mvh. Johan
Avatar billede haolan Nybegynder
20. april 2007 - 17:54 #12
Så virker min årsvisning :)

Takker her også.. Læg svar for points
Avatar billede johan.o Nybegynder
20. april 2007 - 18:01 #13
Huhej hvor det går :)

Mvh. Johan
Avatar billede haolan Nybegynder
15. maj 2007 - 22:23 #14
Hov.. Havde ikke modtaget mail for at du havde svaret :S

Nå men værsgo da :)
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