2013-04-30 100 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_*功能...