2011-01-31 3 views
0

내 뉴스 섹션 용 자동 탐색을 만들려고하고 있으며 지금까지 꽤 성공적이었습니다. 글쎄, 나는 말하지만 나는 걸림돌에 부딪쳤다.PHP & MySql 탐색 문제 ... 날짜가

내비게이션 자동으로 각 뉴스 기사로 연결되는 링크를 만듭니다. 그러나 원하는 것은 내가 작성한 달에 대한 링크를 만드는 것입니다.

function pir_news_nav($nav_y) { 
    $mysql = mysqli_connect("HOST", "DB", "PW", "TABLE"); 
    $newsQ = "SELECT * FROM tbl_news WHERE newsDateAdded LIKE '%". $nav_y ."%' AND newsActive=1 ORDER BY newsDateAdded ASC "; 
    $newsRes = mysqli_query($mysql, $newsQ); 
     while ($newsRow = mysqli_fetch_array($newsRes)) { 
      $newsTitle = $newsRow["newsTitle"]; 
      $date = $newsRow["newsDateAdded"]; 
     $y = date("Y", strtotime($date)); 
     $m = date("m", strtotime($date)); 
     $month = date("F", strtotime($date)); 

     echo "<li><a href='?year=".$y."&amp;month=".$m."'>".$month."</a></li>"; 
    } 
} 

나는 그것을 같이하고 싶은 반면에 너무

<li>January</li> 
<li>February</li> 
<li>March</li> 
<li>March</li> 
<li>March</li> 
<li>April</li> 
.....etc 

과 같이 정렬되지 않은 목록을 뱉어 :

<li>January</li> 
<li>February</li> 
<li>March</li> 
<li>April</li> 
.....etc 

내가 사용하고있는 코드입니다
+0

아니요, 뉴스 기사를 게시 한 월 목록 일뿐입니다. 반복하지 않고. – Martin

답변

0

잘 이해한다면 모든 뉴스를 선택하고 매달 한 번만 표시하고 싶습니까?
나는 u가 매월 썼는지를 나타 내기 위해 불리언 배열을 사용하도록 제안합니다 ....

2

MySQL의 "GROUP BY"를 사용하십시오.

나는 보통 어떻게 원하는 결과를 얻을 정확히 찾아해야하지만, 내 머리 위로 떨어져 : 물론

$newsQ = "SELECT MONTH(newsDateAdded) as month FROM tbl_news WHERE newsDateAdded LIKE '%". $nav_y ."%' AND newsActive=1 ORDER BY newsDateAdded ASC GROUP BY month"; 

, 이것은 당신 만이 쿼리에서 달 할 것으로 가정합니다. 그것은 당신이하고있는 것처럼 보이지만 그것은 가정에 관계 없습니다.

다음은 MONTH()에 대한 MySQL 페이지입니다. http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_month

(. 달은 1-12로 반환됩니다주의, 그래서 당신은 텍스트로 그 변환을 처리해야 할 것입니다)

0

당신이 시도 할 수 있습니다 :

$archiveList=array(); 
    foreach($result->result() as $row) 
    { 
     $archiveList[]=array('text'=>date('F Y', strtotime($row->date_added)), 'link'=>date('Y/m', strtotime($row->date_added))); 
    } 

    foreach ($archiveList as $k=>$na) 
     $new[$k] = serialize($na); 
    $uniq = array_unique($new); 
    foreach($uniq as $k=>$ser) 
     $clean[$k] = unserialize($ser); 

    return $clean; 

과 함께 배열을 구축 당신이 TW해야합니다 있도록 데이터베이스에서 날짜 목록에서 고유 값 (이 응용 프로그램의 경우 DATETIME)

편집 은 CI 응용 프로그램에서 촬영 조금 먹어라. $row->date_added은 귀하의 타임 스탬프입니다.