Jump to content

Previous News Dates


rcouser

Recommended Posts

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

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

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

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.