2013-08-06 56 views
0

我正在製作一個php聊天系統,我想爲每一天添加一個標題。得到以前的數組值

爲了實現這一目標,我需要一種方式來獲得這兩個當前消息的日期和從我的數據庫以前messgage日期,這樣我就可以在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一些幫助!提前致謝。

+0

只是一個側面說明,mysql_ *函數將被棄用,從PHP 5.5.0+開始,您應該考慮使用PDO或mysqli_ * – Resitive

回答

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中使用邏輯來記住以前的值。

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 
} 
?> 
+0

對於第二項和以下內容,** $ dtdateprev **在_echo_中使用時打印當前日期而不是以前的值。首先它應該是空的。有什麼想法嗎? – nkotsioris

+0

沒有,如果你'echo'的** $ dtdateprev **然後它會給'以前value' –

+0

我已經取代了''

Example Message Body

,我也得到了以下內容:'
Example Header

Fri 26 Oct 2012 13:08:31

Example Header

Sat 27 Oct 2012 14:02:09

Tue 06 Aug 2013 13:00:09

Example Header

Mon 05 Nov 2012 12:02:11

Tue 06 Aug 2013 13:00:09

Example Header

Mon 05 Nov 2012 12:04:54

Tue 06 Aug 2013 13:00:09

'。我也將日期格式更改爲「D d M Y H:i:s」。 – nkotsioris