【问题标题】:Count record each day of a month from mysql into html table从mysql统计一个月的每一天到html表中的记录
【发布时间】:2017-08-29 16:21:09
【问题描述】:

我想将所有 mySql 结果放在一个 html 表中。这是 mySql:

SELECT date(vwr_date) AS mon, date(vwr_date) AS date, count(vwr_cid) AS views 
FROM car_viewer 
WHERE Year(vwr_date)='2012' AND vwr_tid='18' 
GROUP BY date 
ORDER BY date DESC

根据上面的查询,结果如下:

date        views
2012-10-23  14
2012-10-22  339
2012-10-21  305
2012-10-20  354
....
2012-10-01  291
2012-09-30  246
2012-09-29  297
...
2012-09-01  281

mysql 的结果非常好。现在这是一个问题。我尝试了很多次和不同的方法来根据 car_viewer.vwr_date 中的每个日期放入这些视图。所以我是这样写的:

<table border="0" cellpadding="3" cellspacing="1" width="100%">
        <thead>
        <tr>
            <th>Mon Year / Date</th>
            <?
            for($i=1;$i<32;$i++){
                echo "<th>$i</th>";
            }
            ?>
        </tr>
    </thead>
    <tbody>
        <?
        $_thisYear=date("Y");
        $sql_nViewer="select date(vwr_date) as mon, date(vwr_date) as date, count(vwr_cid) as views from car_viewer where Year(vwr_date)='$_thisYear' and vwr_tid='$_SESSION[admin_id]' GROUP BY date ORDER BY date desc";
        echo $sql_nViewer;
        $result_nViewer=mysql_db_query($dbname,$sql_nViewer);
        $rec_nViewer=mysql_fetch_array($result_nViewer);
        $_monYear=date("M Y",strtotime($rec_nViewer[mon]));
        $_monYear2=date("Y-n",strtotime($rec_nViewer[mon]));

            echo "<tr><td>$_monYear</td>";//month name
        $day=1;
        while($rec_nViewer=mysql_fetch_assoc($result_nViewer)){
            $_nViewerDBdate=$rec_nViewer['date'];
            $_nViewerDBviews=$rec_nViewer['views'];
            echo "
            <td>$_nViewerDBviews</td>
            ";$day++;
            if($day==$_daysInMon+1){
                echo "</tr>";
            }
        }
        ?>
        </tbody>
        </table>

上面代码的结果很奇怪——不是我想要的。我需要这样显示数据:

所以请建议我应该怎么做才能达到我的预期。问候

【问题讨论】:

    标签: html mysql count html-table record


    【解决方案1】:

    您可以从 mysql 返回该格式的数据

    SELECT MONTH_v, YEAR_V
    GROUP_CONCAT(IF(day_v=1, views, null)) AS '1',
    GROUP_CONCAT(IF(day_v=2, views, null)) AS '2',
    ----
    GROUP_CONCAT(IF(day_v=31, views, null)) AS '31'
    FROM
    (
     SELECT DAY(vwr_date) AS day_v, 
     MONTH(vwr_date) AS MONTH_v, 
     Year(vwr_date) AS YEAR_V,
     date(vwr_date) AS date_v, 
     count(vwr_cid) AS views 
     FROM car_viewer 
     WHERE Year(vwr_date)='2012' AND vwr_tid='18' 
     GROUP BY date_v 
    )
    GROUP BY MONTH_v, YEAR_V 
    ORDER BY MONTH_v, YEAR_V DESC
    

    【讨论】:

    • 我遇到了错误:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT(IF(day_v=1, views, null)) AS '1', GROUP_CONCAT(IF(day_v=2, views, n' at line 2
    • 然后我认为缺少逗号或逗号可能是一些问题然后我得到了:#1248 - Every derived table must have its own alias
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    相关资源
    最近更新 更多