0

OK、mysqlデータベースからの結果のリストがあります。基本的には、閲覧したWebサイトのページをリストし、日付ごとにグループ化します。結果は問題なく、すべてが適切にグループ化されています。このようにページに表示されます。

2012/03/29 09:18 ページ名

2012/03/29 09:24 ページ名

今私がやりたいことは、結果がこのようにリストされるようにフォーマットを変更できるかどうかを確認することです

2012/03/29

ページ名

ページ名

2012/03/30

ページ名

ページ名

私が抱えている問題の 1 つは、日付フィールドが日付時刻であることです。ただし、変数から日付を取り除いてその日付を使用することはできますが、上記のように結果を一覧表示する方法がわかりません。以下は私の現在のコードです、

$query = "SELECT date, page_name FROM page_views GROUP BY date"; 
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
echo $row['date']. " - $". $row['page_name'];
echo "<br />";
4

1 に答える 1

1

PHPのdate()を使用して、日時をフォーマットできます。

while($row = mysql_fetch_array($result)) { 
    echo date("d/m/Y", strtotime($row['date']));
    echo "<br />";
    echo $row['page_name'];
    echo "<br />"; 
}

これにより、次のようになります。

2012年3月29日

ページ名

2012年3月30日

ページ名

編集:

これが今の私の唯一の解決策です:

//First you select only the DISTINCT DATEs without TIME
$query1 = 'SELECT DISTINCT DATE_FORMAT(date, %d/%m/%Y") as date FROM page_views';
$result1 = mysql_query($query1) or die(mysql_error()); 

//Create a while-loop to store DATE data in array
while($row1 = mysql_fetch_array($result1)) {
    $array[]['date'] = $row1['date']

    //SELECT the page_names where the date is LIKE the date in array
    $query2 = 'SELECT page_name FROM page_views WHERE date LIKE "%'.$row1['date'].'%"';
    $result2 = mysql_query($query2) or die(mysql_error());


    //Create a second while-loop to store the pagenames data in array who fits to the date
    while($row2 = mysql_fetch_array($result2) {
        $array[]['pagenames'][] = $row2['page_name'];
    }
}

print_r($array);
//This will output this:
$array = Array(
    [0] => Array(
        [date] => 29/03/2012
        [pagenames] => Array(
            [0] => pagename1
            [1] => pagename2
        )
    )
    [1] => Array(
        [date] => 30/03/2012
        [pagenames] => Array(
            [0] => pagename1
            [1] => pagename2
        )
    )
)

//use foreach to display the data
foreach($array as $entry) {
    echo $entry['date'];
    echo '<br />';
    foreach($entry['pagenames'] as $pagename) {
        echo $pagename;
        echo '<br />';
    }
}
于 2012-04-11T06:30:43.390 に答える