2012-06-05 2 views
0

나는 날짜를 Tuesday 05 June 2012 04:14:44 PM과 같은 문자열로 저장하는 뉴스 피드를 만들고 있습니다.PHP 날짜별로 정렬 하시겠습니까?

두 가지 일을하고 싶습니다.

  1. 정렬 (가장 오래된 최신) 날짜별로 뉴스 피드 날짜가 오늘 날짜 인 경우
  2. 은 (또한 정렬)에만 시간을 보여줍니다.
+2

'날짜를 문자열로 저장합니다'무엇이 세상 사람들에게 그렇게합니까? 아니, 나는 진짜 관심이있어, 내가 이유를 찾을 수 없기 때문이다. – k102

+0

나는 날짜순으로 정렬 했었지만 시간을 정렬하는 방법을 알아낼 수는 없었습니다. if와 while 문이 많이 포함되어 있지 않아도되었습니다. – user1436735

+1

ID로 뉴스를 저장하거나 strtotime을 사용할 수 있습니다 (), 당신은 숫자를 얻을거야, 숫자가 높을수록, 최근에, 당신은 또한 date() 함수를 사용하여 문자열로 변환 할 수있다. 구글은 당신의 친구이다. :) – HamZa

답변

-2

이 정렬 방법은 효과적이지 않습니다. ID 열을 추가하고 ID로 정렬 할 수 있습니다. 누군가 게시물을 게시 할 때마다 피드에 삽입됩니다. 증가 된 ID가 삽입됩니다. 그것은 날짜 정렬과 유사합니다 - 당신은 최신을 원합니다.

가장 권장되고 효과적인 정렬 방법입니다.

+0

나는 그 전에 생각했지만 뭔가 생각했다. 그것으로 작동하지 않을 것입니다. 감사합니다 :) – user1436735

+2

흠 ...하지만 왜? 나는 특별한 datetime 필드에 날짜를 저장하는 것이 모든 문제를 해결할 것이라고 생각했다. ID가있는 경우 - 예를 들어 모두 선택하려면 어떻게해야합니까? 'yesterdays'소식? – k102

3

저장 용량을 "unix timestamp"으로 변경했습니다. 그걸로 whatever format of date you like을 인쇄 할 수 있습니다. 또한 숫자이며 매우 쉽게 정렬 할 수 있습니다.

+0

그게 완벽합니다. 감사! date 함수로 타임 스탬프를 포맷 할 수 있는지 몰랐다. – user1436735

+0

아니, 당신이 알아낼 때 축복의 그런 종류의 .. 이런 종류의 문제도 한번 고생했다;) – Gustav

0

당신의 문제를 해결할 것 같아요. 그러나 가능한 경우 테이블 디자인을 수정하는 것이 좋습니다.

$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/>"; 
} 
+0

그들은 [** 강하게 ** ** mysqli ** 확장을 사용하는 것이 좋습니다 **] (http://php.net/manual/en/mysqli.overview.php) –

+0

: 오, 죄송합니다. :) – sephoy08

관련 문제