rcouser Posted February 8, 2010 Share Posted February 8, 2010 Hey there, I'm trying to figure out the best way to create archive news. I want to create a list just like below with 14 previous months from the current date. How would I do this with php? Regards, <ul> <li><a href="/archived-news/2010/02/">February 2010</a></li> <li><a href="/archived-news/2010/01/">January 2010</a></li> <li><a href="/archived-news/2009/12/">December 2009</a></li> <li><a href="/archived-news/2009/11/">November 2009</a></li> <li><a href="/archived-news/2009/10/">October 2009</a></li> <li><a href="/archived-news/2009/09/">September 2009</a></li> <li><a href="/archived-news/2009/08/">August 2009</a></li> <li><a href="/archived-news/2009/07/">July 2009</a></li> <li><a href="/archived-news/2009/06/">June 2009</a></li> <li><a href="/archived-news/2009/05/">May 2009</a></li> <li><a href="/archived-news/2009/04/">April 2009</a></li> <li><a href="/archived-news/2009/03/">March 2009</a></li> <li><a href="/archived-news/2009/02/">February 2009</a></li> <li><a href="/archived-news/2009/01/">January 2009</a></li> </ul> Link to comment https://forums.phpfreaks.com/topic/191329-previous-news-dates/ Share on other sites More sharing options...
jskywalker Posted February 8, 2010 Share Posted February 8, 2010 i would do it like this: <?php function add_date($orgDate,$mth){ $cd = strtotime($orgDate); $retDAY = date('Y-m-d', mktime(0,0,0,date('m',$cd)+$mth,date('d',$cd),date('Y',$cd))); return $retDAY; } $numOfMonth=-14; $start_date=add_date(date('Y-m-d'),$numOfMonth); echo "start: $start_date <br>"; echo "<ul>"; $start=mktime(0,0,0,substr($start_date,5,2), substr($start_date,8,2), substr($start_date,0,4)); $end=time(); for ($i=$start; $i<$end; ) { $d=$i; echo "<li><a href='/archived-news/"; echo date("Y/m",$d); echo "'>"; echo date("F Y",$d); echo "</a></li>"; $i=$i+31*24*3600; } echo "</ul>"; ?> Link to comment https://forums.phpfreaks.com/topic/191329-previous-news-dates/#findComment-1008790 Share on other sites More sharing options...
rcouser Posted February 9, 2010 Author Share Posted February 9, 2010 Hi jskywalker, Thanks for the help but I figured it out myself. Here is the code for anyone else with the same problem. Regards, <?php ini_set('date.timezone', 'Europe/London'); $f = getdate(); $f = $f[0]; function DateAdd($interval, $number, $date) { $date_time_array = getdate($date); $hours = $date_time_array['hours']; $minutes = $date_time_array['minutes']; $seconds = $date_time_array['seconds']; $month = $date_time_array['mon']; $day = $date_time_array['mday']; $year = $date_time_array['year']; switch ($interval) { case 'yyyy': $year+=$number; break; case 'q': $year+=($number*3); break; case 'm': $month+=$number; break; case 'y': case 'd': case 'w': $day+=$number; break; case 'ww': $day+=($number*7); break; case 'h': $hours+=$number; break; case 'n': $minutes+=$number; break; case 's': $seconds+=$number; break; } $timestamp= mktime($hours,$minutes,$seconds,$month,$day,$year); return $timestamp; } ?> <ul> <?php for($x = 1; $x <= 14; $x++){ echo '<li><a href="/archived-news/'.$category_url.'/'.date("Y/m/", $f = DateAdd("m",-1,$f)).'">'; echo date("F Y", $f); echo '</a></li>'; }?> </ul> Link to comment https://forums.phpfreaks.com/topic/191329-previous-news-dates/#findComment-1009365 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.