10. oktober 2006 - 16:35
Der er
15 kommentarer og 3 løsninger
Skriv alle måneder på en side
Hej eksperter. Jeg skal have lavet en side hvor alle årstal og måneder siden September 2005 indtil nu står. altså så det ser sådan ud: 2005 September Oktober November December 2006 Januar Februar Marts April Maj Juni Juli August September Hver måned skal så være et link. Som ser sådan ud hvor md er månedens nummer og aa er årstallet: nyhed.php?md=05&aa=2006
Annonceindlæg fra Barco
10. oktober 2006 - 16:47
#1
Noget i denne stil? $maanedNavn = ("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"); $startAar = 2005; $startMaaned = 8; $slutAar = idate("Y"); $slutMaaned = idate("m"); for ($aar=$startAar; $aar<=$slutAar$aar++) { echo $aar . "<br>"; for ($maaned=0; $maaned<=11; $maaned++) { if ($aar == $startAar && $maaned < $startMaaned) continue; if ($aar == $slutAar && $slutMaaned < $maaned) continue; echo "<a href='nyhed.php?md=$maaned&aa=$aar'>" . $maanedNavn[$maaned] . "</a><br>"; } echo "<br>"; }
10. oktober 2006 - 16:51
#2
Den får denne fejl: Parse error: syntax error, unexpected ',' in /var/www/www.dnsb.info/arkiv.php on line 10 "$maanedNavn = ("Januar..." er linje 10
10. oktober 2006 - 16:53
#3
$maanedNavn = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
10. oktober 2006 - 16:54
#4
Prøv denne: <?php setlocale( LC_TIME, "da_DK", "da", "dan", "danish", "da_DK.ISO8859-1" ); $date = $start = mktime( 0, 0, 0, 9, 1, 2005 ); $now = time(); $oy = 0; while ( true ) { $y = date( "Y", $date ); if ( $oy != $y ) { if ( $oy != 0 ) echo "<br>"; echo "<b>" . date( "Y", $date ) . "</b><br>\n"; $oy = $y; } echo strftime( "<a href=\"nyhed.php?md=%m&aa=%Y\">%B</a><br>\n", $date ); $date = strtotime( "+1 month", $date ); if ( $date > $now ) break; } ?> :)
10. oktober 2006 - 17:47
#5
Testside:
http://chapter.dk/exp/737793.php $maaned_1 = 9; // Givet start-måned
$maaned_2 = date("n", time()); // Udregnet slut-måned
$aar_1 = 2005; // Givet start-år
$aar_2 = date("Y", time()); // udreghet slut-år
for($i = ($aar_2-$aar_1); $i >= 0; $i--)
for($j = 12; $j != 0; $j--)
if(($aar_1+$i == $aar_2 && $maaned_2 >= $j) || ($aar_1+$i != $aar_2 && $aar_1+$i != $aar_1) || ($aar_1+$i == $aar_1 && $maaned_1 <= $j))
{
$time = mktime(0,0,0,$j,1,$aar_1+$i);
print "<a href=\"index.php?md=".date("m", $time)."&aa=".date("y", $time)."\">".date("Y / m",$time)."</a><br />\n";
}
10. oktober 2006 - 17:51
#6
Okay tak coderdk. dit virkede helt perfekt..Lige 2 ting til. Hvordan får jeg månederne med stort og så skal det stå omvendt sådan så 2006 øverst og 2005 under osv.
10. oktober 2006 - 17:53
#7
Og hvis du vil have månedsnavnet med: $maaned = array('01' => "Januar",'02' => "Februar",'03' => "Marts",'04' => "April",'05' => "Maj",'06' => "Juni",'07' => "Juli",'08' => "August",'09' => "September",'10' => "Oktober",'11' => "November",'12' => "December"); $maaned_1 = 9; // Givet start-måned $maaned_2 = date("n", time()); // Udregnet slut-måned $aar_1 = 2005; // Givet start-år $aar_2 = date("Y", time()); // udreghet slut-år for($i = ($aar_2-$aar_1); $i >= 0; $i--) { print $aar_1+$i."<br />\n"; for($j = 12; $j != 0; $j--) if(($aar_1+$i == $aar_2 && $maaned_2 >= $j) || ($aar_1+$i != $aar_2 && $aar_1+$i != $aar_1) || ($aar_1+$i == $aar_1 && $maaned_1 <= $j)) { $time = mktime(0,0,0,$j,1,$aar_1+$i); print "<a href=\"index.php?md=".date("m", $time)."&aa=".date("y", $time)."\">".$maaned[date("m",$time)]."</a><br />\n"; } }
10. oktober 2006 - 17:57
#8
F.eks. sådan: $maanedNavn = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"); $startAar = 2005; $startMaaned = 8; $slutAar = idate("Y"); $slutMaaned = idate("m"); for ($aar=$slutAar; $aar>=$startAar; $aar--) { echo $aar . "<br>"; for ($maaned=0; $maaned<=11; $maaned++) { if ($aar == $startAar && $maaned < $startMaaned) continue; if ($aar == $slutAar && $slutMaaned < $maaned) continue; echo "<a href='nyhed.php?md=$maaned&aa=$aar'>" . $maanedNavn[$maaned] . "</a><br>"; } echo "<br>"; }
10. oktober 2006 - 18:14
#9
Okay. Nu har jeg valgt at bruge hmmm10's kode: $maaned = array('01' => "Januar",'02' => "Februar",'03' => "Marts",'04' => "April",'05' => "Maj",'06' => "Juni",'07' => "Juli",'08' => "August",'09' => "September",'10' => "Oktober",'11' => "November",'12' => "December"); $maaned_1 = 9; // Givet start-måned $maaned_2 = date("n", time()); // Udregnet slut-måned $aar_1 = 2005; // Givet start-år $aar_2 = date("Y", time()); // udreghet slut-år for($i = ($aar_2-$aar_1); $i >= 0; $i--) { print $aar_1+$i."<br />\n"; for($j = 12; $j != 0; $j--) if(($aar_1+$i == $aar_2 && $maaned_2 >= $j) || ($aar_1+$i != $aar_2 && $aar_1+$i != $aar_1) || ($aar_1+$i == $aar_1 && $maaned_1 <= $j)) { $time = mktime(0,0,0,$j,1,$aar_1+$i); print "<a href=\"index.php?md=".date("m", $time)."&aa=".date("y", $time)."\">".$maaned[date("m",$time)]."</a><br />\n"; } } men en lille detalje er at årstallet ikke skal være 06 men 2006..hvordan klarer man den ?
10. oktober 2006 - 18:16
#10
Okay..skulle være Y i stedet for y..nå man i alle har svaret fint så i kan bare ligge svar og få points :)
10. oktober 2006 - 18:23
#11
Smider et svar hvis det kan bruges. Har testet alle forslagende -- og har måtte konstatere at mit ikke er et hurtigste :( idate() virker ikke på min server?
10. oktober 2006 - 18:27
#12
Hvis idate ikke virker er det fordi at du bruger en lidt gammel PHP. idate er med fra PHP v5:
http://dk2.php.net/idate
10. oktober 2006 - 18:31
#13
nielle > Så må jeg jo vente på mit hotel opdatere til PHP5..
10. oktober 2006 - 18:34
#14
Ja, eller du kan bruge date() og så konvertere til en int. idate() er bare lidt mere to-the-point efter min mening :^)
10. oktober 2006 - 18:41
#15
Du får også lige min: <?php setlocale( LC_TIME, "da_DK", "da", "dan", "danish", "da_DK.ISO8859-1" ); $end = mktime( 0, 0, 0, 9, 1, 2005 ); $date = $now = time(); $oy = 0; while ( true ) { $y = date( "Y", $date ); if ( $oy != $y ) { if ( $oy != 0 ) echo "<br>"; echo "<b>" . date( "Y", $date ) . "</b><br>\n"; $oy = $y; } echo strftime( "<a href=\"nyhed.php?md=%m&aa=%Y\">", $date ) . ucfirst( strftime( "%B", $date ) ) . "</a><br>\n"; $date = strtotime( "-1 month", $date ); if ( $date < $end ) break; } ?>
10. oktober 2006 - 20:21
#16
Er det mig der ventes på? Jeg har jo ikke fået at vide om min kode virker for dig datasource? Den kræver som sagt at man har PHP 5.
10. oktober 2006 - 22:42
#17
Kunne bruge alle jeres svar..da jeg lærte noget forskelligt af dem :)
11. oktober 2006 - 06:53
#18
Takker for point :^)
Vi tilbyder markedets bedste kurser inden for webudvikling