のような文字列として日付を格納するニュース フィードを作成していますTuesday 05 June 2012 04:14:44 PM
。
やりたいことは2つ。
- ニュース フィードを日付順に並べ替える (新しいものから古いものへ)
- 日付が今日の日付の場合は、時間のみを表示します (これもソートされます)。
「 unix タイムスタンプ」を保存するようにストレージを変更します。そこから、好きな形式の日付を印刷できます。また、それは数字であり、非常に簡単にソートできます。
これで問題が解決すると思いますが、可能であればテーブルのデザインを変更することをお勧めします。
$result = mysql_query("SELECT * FROM newsfeed");
$records = array();
$i = 0;
while ($row = mysql_fetch_array($result))
{
$records[$i] = array('news_idPK' => $row['news_idPK'],
'date' => date("Y-m-d H:i:s", strtotime($row['date'])),
'news' => $row['news']
);
$i++;
}
usort($records, "cmp");
function cmp($a, $b) {
$a = strtotime($a['date']);
$b = strtotime($b['date']);
return $a - $b;
}
$ctr = count($records)-1;
for($x=$ctr; $x>=0; $x--)
{
$newsDate = date("l d F Y h:i:s A", strtotime($records[$x]['date']));
if(date("Y-m-d", strtotime($records[$x]['date'])) == date("Y-m-d"))
{
$newsDate = date("h:i:s A",strtotime($records[$x]['date']));
}
echo $records[$x]['news_idPK']." - ".$newsDate." - ".$records[$x]['news']." <br/>";
}
この並べ替え方法は効果的ではありません。ID 列を追加して、ID で並べ替えることができます。誰かが投稿を投稿し、それがフィードに挿入されるたびに、増分された ID が挿入されます。それは日付の並べ替えと同じです - あなたは最新のものを求めています。
これは、最も推奨される効果的な並べ替え方法です。