2013-04-30 49 views
2

我有這個表:顯示SQL表和比較值

+----+---------------------+----------+---------+---------+---------+ 
| id | date    | client1 | client2 | client1 | client1 | 
+----+---------------------+----------+---------+---------+---------+ 
| 1 | 2013-04-17 16:15:46 |  8592 | 9786 | 6471 |  0 | 
| 2 | 2013-04-27 16:15:46 |  8617 | 9876 | 7130 | 40243 | 
| 3 | 2013-04-28 17:57:30 |  8617 | 9884 | 7211 | 41657 | 
| 4 | 2013-04-29 13:28:11 |  8616 | 9886 | 7270 | 42516 | 
+----+---------------------+----------+---------+---------+---------+ 

而且我在PHP顯示它是這樣的:

<table width="800" border="0" cellspacing="3" cellpadding="3" style="margin-left:auto; margin-right:auto"> 
    <tr> 
    <th scope="col" style="text-align:center; font-weight:bold">Date</th> 
    <th scope="col" style="text-align:center; font-weight:bold">Client 1</th> 
    <th scope="col" style="text-align:center; font-weight:bold">Client 2</th> 
    <th scope="col" style="text-align:center; font-weight:bold">Client 3</th> 
    <th scope="col" style="text-align:center; font-weight:bold">Client 4</th> 
    </tr> 
    <? 

$queryuv = mysql_query("SELECT * FROM com_information ORDER BY date ASC"); 
while ($resultuv=mysql_fetch_assoc($queryuv)) { 
     $date=$resultuv['date']; 
     $client1=$resultuv['client1']; 
     $client2=$resultuv['client2']; 
     $client3=$resultuv['client3']; 
     $client4=$resultuv['client4'];   
     ?>    
    <tr> 
    <th scope="row" style="text-align:left"><?=$date?></th> 
    <td style="text-align:center"><?=number_format($client1,0,'.',',');?></td> 
    <td style="text-align:center"><?=number_format($client2,0,'.',',');?></td> 
    <td style="text-align:center"><?=number_format($client3,0,'.',',');?></td> 
    <td style="text-align:center"><?=number_format($client4,0,'.',',');?></td> 
    </tr> 

<? } ?> 
</table> 

我想什麼做的,是在表是我顯示信息,比較來自同一客戶端的前一個日期的值,並且顯示它的增長或減少的程度。

+0

對的,因爲這'client'柱,再? :) – 2013-04-30 18:49:15

+0

爲什麼「client1」列在您的表中重複3次?這可能是一個錯字嗎? – Revent 2013-04-30 19:02:11

回答

1

設置一些變量來跟蹤先前值

$lastclient1 = 0 ; 
$lastclient2 = 0 ; 
$lastclient3 = 0 ; 
$lastclient4 = 0 ; 

象以前

$queryuv = mysql_query("SELECT * FROM com_information ORDER BY date ASC"); 

while ($resultuv=mysql_fetch_assoc($queryuv)) { 
     $date=$resultuv['date']; 
     $client1=$resultuv['client1']; 
     $client2=$resultuv['client2']; 
     $client3=$resultuv['client3']; 
     $client4=$resultuv['client4'];   
     ?> 

輸出數據作爲前 - 對於移動數據可以使用:

<?=number_format($client1-$lastclient1,0,'.',',');?> 

設置循環結束前的最後一行數據

<? 
     $lastclient1=$client1; 
     $lastclient2=$client2; 
     $lastclient3=$client3; 
     $lastclient4=$client4; 
     } 
?> 
+0

完美地工作!謝謝!! – 2013-04-30 19:15:23

0

你的意思是這樣的:

<table width="800" border="0" cellspacing="3" cellpadding="3" style="margin-left:auto; margin-right:auto"> 
    <tr> 
    <th scope="col" style="text-align:center; font-weight:bold">Date</th> 
    <th scope="col" style="text-align:center; font-weight:bold">Client 1</th> 
    <th scope="col" style="text-align:center; font-weight:bold">Client 2</th> 
    <th scope="col" style="text-align:center; font-weight:bold">Client 3</th> 
    <th scope="col" style="text-align:center; font-weight:bold">Client 4</th> 
    </tr> 
    <? 

$queryuv = mysql_query("SELECT * FROM com_information ORDER BY date ASC"); 

$client1 = false; 
$client2 = false; 
$client3 = false; 
$client4 = false; 

while ($resultuv=mysql_fetch_assoc($queryuv)) { ?>    
    <tr> 
    <th scope="row" style="text-align:left"><?=$resultuv['date']?></th> 
    <td style="text-align:center"><?=number_format($resultuv['client1'],0,'.',',');?><?if($client1 !== false) echo ($client1-$resultuv['client1'] > 0 ? '+' : '-') . number_format($client1-$resultuv['client1'], 0, '.', ',')?> </td> 
    <td style="text-align:center"><?=number_format($resultuv['client2'],0,'.',',');?><?if($client2 !== false) echo ($client2-$resultuv['client2'] > 0 ? '+' : '-') . number_format($client2-$resultuv['client2'], 0, '.', ',')?></td> 
    <td style="text-align:center"><?=number_format($resultuv['client3'],0,'.',',');?><?if($client3 !== false) echo ($client3-$resultuv['client3'] > 0 ? '+' : '-') . number_format($client3-$resultuv['client3'], 0, '.', ',')?></td> 
    <td style="text-align:center"><?=number_format($resultuv['client4'],0,'.',',');?><?if($client4 !== false) echo ($client4-$resultuv['client4'] > 0 ? '+' : '-') . number_format($client4-$resultuv['client4'], 0, '.', ',')?></td> 
    </tr> 
<? 
    $client1 = $resultuv['client1']; 
    $client2 = $resultuv['client2']; 
    $client3 = $resultuv['client3']; 
    $client4 = $resultuv['client4']; 
?> 
<? } ?> 
</table> 

???

,我強烈建議切換到PDO或至少mysqli由於被棄用mysql_*功能...