2014-06-20 1 views
3

json 출력을 사용하여 타임 스탬프로 기사보기를 계산합니다. 이 코드를 가지고 :PHP의 MySQL 타임 스탬프 카운트에서 월 이름을 출력하는 방법은 무엇입니까?

$value = array(); 
$stats = Access::FETCH("SELECT COUNT(*) AS id FROM news_stats GROUP BY YEAR(date), MONTH(date)"); 

foreach($stats as $key => $value){ 

    $rows2[] = $value['id']; 

    } 
echo json_encode($rows2); 

출력은 다음과 같습니다 NOTE: this is count for month each month

["1","6"] 

는이 같은이 OUPUT에 대한 월 이름을 인쇄해야합니다

["january","June"] 

어떻게 인쇄 달의 이름으로 할 수 있습니까? Menaig는 : 1 , 6 어느 달부터 계산 되었습니까?

당신은 foreach 루프에서이 유사한 코드를 사용할 수 있습니다
+0

http://www.php.net//manual/en/function.date.php 옵션 "F"를보십시오 – VikingBlooded

+2

@joe PHP에서 'MONTHNAME'을 (를) 통해 MySQL에서 처리 할 수있는 이유는 무엇입니까? https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_monthname – JakeGould

답변

2

이 시도 :

$value = array(); 
$stats = Access::FETCH("SELECT id, YEAR(FROM_UNIXTIME(date)) AS `YEAR`, 
       MONTHNAME(FROM_UNIXTIME(date)) AS `MONTH`, 
       COUNT(*) AS id 
     FROM news_stats GROUP BY `YEAR`, `MONTH` ORDER BY `YEAR` DESC, `MONTH`"); 


foreach($stats as $key => $value){ 

    $rows2[] = $value['MONTH']; 

    } 
    echo json_encode($rows2); 

출력은 다음과 같습니다

["June","August"] 

즐기세요!

1

:

<?php 
$monthNum = $value['id']; 
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10)); 
?> 

가에서 툭

: 같은 검색어를 조정하여 http://gilbert.pellegrom.me/php-month-number-to-month-name-the-easy-way/

+0

근본적인 문제는 해당 달에 대한 데이터를 전혀 반환하지 않는 쿼리에 있습니다. PHP 날짜 처리의 양은 그것을 해결할 수 없습니다. –

4

당신은 MySQL은 그 자체로 그것을 할 수 있도록 MONTHNAME를 사용 :

SELECT COUNT(*) AS id FROM news_stats GROUP BY YEAR(date), MONTHNAME(date); 

mktime/date 콤보를 통해 PHP에서 수행하는 유일한 진정한 가치는 cript에는 숫자 값뿐만 아니라 전체 월 이름 자체가 필요합니다. 그러나 이것 역시 MySQL에서 SELECT YEAR(date) as year, MONTH(date) as month, MONTHNAME(date) as month_name…과 같은 것을 사용하여 해결할 수 있지만, 모든 것은 코딩 요구 사항에 달려 있습니다.

또한 예를 들어 코드에 모두 GROUP BY으로 코딩되었음을 알게되었습니다. 그래서 아마도이 더 잘 작동 것 :

SELECT COUNT(*) AS id, 
YEAR(date) as `year`, 
MONTH(date) as `month`, 
MONTHNAME(date) as `month_name`, 
FROM `news_stats` 
GROUP BY `year`, `month`; 
+0

이것은 여전히 ​​결과 세트에 monthname을주지 않습니다. –

+0

@MikeBrant Noted. GROUP BY는 질의가 값을 반환하는 곳이라는 것을 알게되었습니다. 이제 내 최근 편집에서 조정되었습니다. – JakeGould

+0

@ JakeGould : jake 질문이 있습니다. 모든 달을 일별로 나열하고 월별로 계산할 수 있습니다. 매달 인쇄 카운트가 0이 아닌 경우 다음과 같이 표시됩니다 :'[ "12", "0", "0 ","120 ","70 ","30 ","20 ","11 ","0 ","10 ","89 "] 어떻게 만드시겠습니까? – user27133