简体   繁体   中英

Display SQL table in PHP and compare values

I have this table:

+----+---------------------+----------+---------+---------+---------+
| 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 | 
+----+---------------------+----------+---------+---------+---------+

And I display it in a PHP like this:

  <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>

What I would like to do, is in the table were I display the info, compair the value with the previous date from the same client, and place display how much did it grow or decrease.

set some variables to track the previous values

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

Carry on as before

$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'];          
        ?>   

output your data as before - For the movement data you can use:

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

set the last row data just before the end of the loop

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

Do You mean something like this:

<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>

???

And I highly recommend switching to PDO or at least mysqli as of mysql_* functions being deprecated...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM