php + mysql =选择并显示不同日期的行

| 伙计们!我从未遇到过选择日期之间的确定行并对它们进行正确排序的问题。任何帮助对理解如何组织php + mysql脚本都将非常有用。 我有一个表,其中包含带有mktime()格式的带有date列的行。该表存储了我网站上广告点击的信息。 这是我的“ 0”表的结构: 1)ID-具有自动增量的行的唯一ID。 2)日期-有人单击链接时,日期为mktime格式。 3)IP-单击链接的访问者的ip地址。 我想从“ 0”表中选择所有信息,并显示在页面上,如下所示: 日期:15.04.2011 IP地址:192.168.0.1。日期:2011年5月15日08:45 IP地址:192.168.0.2。日期:2011年5月15日13:22 IP地址:192.168.0.3。日期:2011年5月15日18:58 日期:16.04.2011 IP地址:192.168.0.1。日期:2011年4月14日14:14 IP地址:192.168.0.2。日期:2011年6月16日09:35 IP地址:192.168.0.3。日期:2011年6月16日14:11 日期:17.04.2011 IP地址:192.168.0.1。日期:2011年4月17日21:56 IP地址:192.168.0.2。日期:2011年7月17日23:04 IP地址:192.168.0.3。日期:2011年4月17日23:13     
已邀请:
您应该使用
ORDER BY
子句按日期对结果进行排序:
SELECT *
FROM `clicks_log`
ORDER BY `date` ASC;
然后,您可以使用PHP date函数传递date列的值作为第二个参数:
// Get the first date
$dateSection = ...;
while ($row = mysql_fetch_assoc($result)) {
    ...

    // Check here if the date header has changed to begin a new section
    $dateHeader = date(\"d.m.Y\", $row[\'date\']);
    if ( $dateHeader !== $dateSection ) {
        // Build new section header here
        ...
        $dateSection = $dateHeader;
    }

    ...
    echo $row[\'ip\'];
    ...
    echo date(\"H:i, d.m.Y\", $row[\'date\']);
    ...
}
我已经省略了获取
$dateSection
$result
变量的代码,但是PHP文档中有很多示例。     
您有两种可能,要么在一个查询中获取数据(我建议),要么使用3个查询。 按照一种查询策略,您只需获取数据并按时间排序即可。在另一行中,使用sql函数UNIX_TIMESTAMP()获取代表日期的时间戳记 具有此时间戳,则可以使用php将结果集分为3个结果集。 另一种方法是为每个日期生成查询。为此,您可以使用php函数mktime来获取$ a =(0:00 15.04)的时间。和$ b =(23:59 15.04)。在您的mysql查询的where条件中,您只需添加一个between语句。所选日期必须是$ a和$ b
where tbl.`date` between FROM_UNIXTIME( \' . $a . \') AND FROM_UNIXTIME( \' . $b . \');\';
    
for ($i = 15; $i <= $current_day_of_month; $i++) {
        // SELECT * FROM clicks_log WHERE DATE LIKE \'% $i.04.2011\' ORDER BY DATE ASC;
        // print the result
}
通常最好将日期存储为Unix时间戳。使用allows9ѭ可以更轻松地进行细粒度控制。     
您需要选择按日期升序排列的数据:
 $sql = \"SELECT ip, date FROM clicks_log table ORDER BY date ASC\";
然后在PHP中处理数据,将其分成几天以进行输出:
 $date = date_parse($row[\'date\']);
 $year = $row[\'year\'];
 $month = $row[\'month\'];
 $day = $row[\'day\'];
    

要回复问题请先登录注册