0

我正在制作一个 php 聊天系统,我想为每一天添加一个标题。

为了实现这一点,我需要一种从我的数据库中获取当前消息日期和上一个消息日期的方法,这样我就可以在 if 语句中使用它们:

<?php if ($dtdate != $dtdateprev) : ?>

我在获取上一个入境日期时遇到问题。

为了获得这些值,我使用以下内容:

<?php
$sql=mysql_query("SELECT * FROM test");
while($row=mysql_fetch_array($sql)) {
    $dtval=$row['dtdate'];
    $dtvalprev= **???**;
    $dtdate=date_format(new DateTime($dtval), "D d M Y");
    $dtdateprev=date_format(new DateTime($dtvalprev), "D d M Y");
?>
<?php if ($dtdate != $dtdateprev) : ?>
<div>Example Header</div>
<?php endif; ?>
<div>Example Message Body</div>
<?php } ?>

所以我需要一些关于 $dtvalprev 的帮助!提前致谢。

4

2 回答 2

0

尝试这个,

<?php
$sql=mysql_query("SELECT * FROM test");
$dtvalprev= '';//previous value initially blank
while($row=mysql_fetch_array($sql)) {
    $dtval=$row['dtdate'];

    $dtdate=date_format(new DateTime($dtval), "D d M Y");
    if($dtdateprev)// check previous value should not blank
        $dtdateprev=date_format(new DateTime($dtvalprev), "D d M Y");

    ?>
    <?php if ($dtdate != $dtdateprev) : ?>
        <div>Example Header</div>
    <?php endif; ?>
    <div>Example Message Body</div>
    <?php 
    $dtdateprev=$dtval;// re-assign the current value
}
?>
于 2013-08-06T11:05:46.763 回答
0

您可以使用查询获取上一个日期:

select t.*,
       (select dtdate
        from test t2
        where t2.dtdate < t.dtdate
        order by dtdate desc
        limit 1
       ) as prevdtdate
from test t;

或者,您可以按日期顺序查询数据库:

select t.*
from test t
order by dtdate;

并使用php中的逻辑来记住以前的值。

于 2013-08-06T11:06:01.683 回答