0

記事が年月形式で作成されたときのアーカイブ リンクを作成したい投稿のアーカイブを作成しています。

データベースに作成された日付はYYYY-MM-DD形式で保存され、これまでにこれを書きました。

$archive =
  mysql_query("SELECT DISTINCT DateCreated FROM blog ORDER by DateCreated")
  or die("Could not execute query");

while($row = mysql_fetch_array($archive) ){ 
  $Date = explode("-", $row["DateCreated"]);
  $Year = $Date[0];
  $Month = $Date[1];

  // Months of the year.
  $MonthName = array(
    "01" => "JAN",
    "02" => "FEB", 
    "03" => "MAR",
    "04" => "APR",
    "05" => "MAY",
    "06" => "JUN",
    "07" => "JUL",
    "08" => "AUG",
    "09" => "SEP",
    "10" => "OCT",
    "11" => "NOV",
    "12" => "DEC");    

 $archiveData .=
   "<a href='archive.php?".$Year."-".$Month.
   "'>".$MonthName[$Month]."-".$Year."</a><br />"; 
}

これらの日付がデータベースに保存されている場合

2012-04-07, 
2012-05-02, 
2012-05-13, 
2012-02-22, 

次に、上記のコードはリンクを次のように生成します

FEB-2012, 
APR-2012, 
MAY-2012, 
MAY-2012, 

すでに追加されている月が表示されます。私がする必要があるのは、一度だけ表示するように制限することです。

クエリを変更する必要があると思いますが、結果を取得する方法がわかりません。助けが必要です。

4

4 に答える 4

3
SELECT DISTINCT
  YEAR(DateCreated) AS yyyy,
  MONTH(DateCreated) AS mm
FROM blog 
ORDER BY DateCreated

それに応じて

$Year = $row["yyyy"];
$Month  = $row["mm"];
于 2012-05-12T19:39:50.907 に答える
1

このクエリはあなたにぴったりだと思います。最初の 3 か月の文字とタイムスタンプの年を選択します。

SELECT 
   substr(MONTHNAME(DateCreated), 1, 3) as month, 
   YEAR(DateCreated) as year
FROM blog 
ORDER by DateCreated DESC

編集: いくつかのテストの後、私はあなたのために完璧なクエリを作成しました.日付をJAN-2012フォーマットで返すので、PHPで日付をフォーマットする必要はありません. ここにあります:

SELECT 
   CONCAT( UPPER(substr(monthname(DateCreated), 1 ,3)), '-', YEAR(DateCreated)) as date
FROM blog 
ORDER by DateCreated DESC
于 2012-05-12T19:47:05.120 に答える
1

選んでみるか

DATE_FORMAT(DateCreated , '%m/%Y')

「DateCreated」の代わりに?結果はわかりませんが、私が覚えている限り、これで問題は解決するはずです。

よろしく

于 2012-05-12T19:40:40.083 に答える
0

私の最終結果はこれでした。

$archive = mysql_query("SELECT DISTINCT YEAR(DateCreated) AS YYYY, MONTH(DateCreated) AS MM FROM blog ORDER BY DateCreated") or die("Could not execute query");

                while($row = mysql_fetch_array($archive) ){

                $Year               = $row["YYYY"];
                $Month              = sprintf("%02s",$row["MM"]);

                // Months of the year.
                $MonthName = array(
                                    "01" => "JAN",
                                    "02" => "FEB", 
                                    "03" => "MAR",
                                    "04" => "APR",
                                    "05" => "MAY",
                                    "06" => "JUN",
                                    "07" => "JUL",
                                    "08" => "AUG",
                                    "09" => "SEP",
                                    "10" => "OCT",
                                    "11" => "NOV",
                                    "12" => "DEC"
                                );    

                    $archiveData .=   "<a href='archive.php?".$Year."-".$Month."'>".$MonthName[$Month]."-".$Year."</a><br />"; 
                } 
于 2012-05-12T19:56:40.617 に答える