如何在while循环中获取记录


How to get record in while loop

产品表:

id | mid | pid | owgh | nwgh |
1    3      12    1.5    0.6
2    3      12    1.5    0.3
3    3      14    0.6    0.4
4    3      15    1.2    1.1
5    4      16    1.5    1.0
6    4      17    2.4    1.2 
7    3      19    3.0    1.4
8    3      19    3.0    1.2

我需要while循环中的结果,如下所示:根据mysql查询

$sql = "SELECT pid,owgh,nwgh from produttable
  WHERE mid = 3 ";

我想要的结果如下:

Product Id  |  Old weight   | New weight 
---------------------------------------
    12            1.5           0.6
    12            1.5           0.3
             Tot: 3.0           0.9
   --------------------------------
    14            0.6           0.4
             Tot: 0.6           0.4
   --------------------------------
    15            1.2          1.1
             Tot: 1.2          1.1
   --------------------------------
    19            3.0          1.4
    19            3.0          1.2
             Tot: 6.0          2.6

$query = mysql_query($sql);

echo"<table>
     <tr>
       <td> Product Id </td>
       <td> Old Weight </td> 
       <td> New Wight </td>
    </tr>
    ";
    while($row = mysql_fetch_array($query )){
        echo "<tr>";
        echo "<td>".$row['pid']."</td>";
        echo "<td>".$row['owgh']."</td>";
        echo "<td>".$row['nwgh']."</td>";
        echo "</tr>";
        echo "<tr><td>-----</td>
                  <td>Tot : </td>
                  <td> </td></tr>";
    }
    echo "
    </table>";

但我得到的结果如下

Product Id  |  Old weight   | New weight 
---------------------------------------
    12            1.5           0.6
   -------------- Tot 
    12            1.5           0.3
   ---------------Tot 
    14            0.6           0.4
   ---------------Tot 
    15            1.2          1.1
   ---------------Tot 
    19            3.0          1.4
   ---------------Tot 
    19            3.0          1.2

我不想要,我想要如下

Product Id  |  Old weight   | New weight 
---------------------------------------
    12            1.5           0.6
    12            1.5           0.3
             Tot: 3.0           0.9
   --------------------------------
    14            0.6           0.4
             Tot: 0.6           0.4
   --------------------------------
    15            1.2          1.1
             Tot: 1.2          1.1
   --------------------------------
    19            3.0          1.4
    19            3.0          1.2
             Tot: 6.0          2.6

更新:2015年3月30日

我能得到以下结果吗,以及每个的总和

Product Id  |  Old weight   | New weight 
---------------------------------------
    12            1.5           0.6
    12            1.5           0.3
             Tot: 3.0           0.9
   --------------------------------
    14            0.6           0.4
             Tot: 0.6           0.4
   --------------------------------
    15            1.2          1.1
             Tot: 1.2          1.1
   --------------------------------
    19            3.0          1.4
    19            3.0          1.2
             Tot: 6.0          2.6
-----------------------------------
 GRAND TOTAL  =  6.3            5

请注意:旧的权重值具有重复权重,因此当总的权重值为时

Product Id  |  Old weight   | New weight 
---------------------------------------
    12            1.5           0.6
                  1.5           0.3
             Tot: 3.0           0.9
   --------------------------------
    14            0.6           0.4
             Tot: 0.6           0.4
   --------------------------------
    15            1.2          1.1
             Tot: 1.2          1.1
   --------------------------------
    19            3.0          1.4
                  3.0          1.2
             Tot: 6.0          2.6
 -----------------------------------
 GRAND TOTAL  =  6.3            5

请注意:旧的权重值具有重复权重,因此当总的权重值为时

由于产品id 12、19来了两次,因此显示了一次其响应值

请帮助我,如果我在HTML tr td格式中有错误,请纠正我,没有必要在同一个表tr,td中。。我只想要上面格式的结果

while($row = mysql_fetch_array($query )){ echo "<td>.$row['pid'].</td>"; echo "<td>.$row['owgh'].</td>"; echo "<td>.$row['nwgh'].</td>"; if (isset($before) and $before!=$row['pid']) { echo "<td>-----</td>"; } $before= $row['pid']; }

最好的方法是在单个查询中完成,以避免多个查询的加载时间和php端的数据处理。所以你的查询必须像这样:

$sql = "SELECT pid, owgh, nwgh from produttable WHERE mid = 3 ORDER BY pid";

按pid排序结果将帮助您管理php端的数据,如下所示:

$last_pid = null;
echo '<table class="myTable" border="0">'."'n";
while($row = mysql_fetch_array($query )) {
    $class = ($last_pid == $row['pid']) ? ' class="same"' : ''; 
    echo '    <tr'.$class.'>'."'n"
        .'        <td>'.$row["pid"].'</td>'."'n"
        .'        <td>'.$row["owgh"].'</td>'."'n"
        .'        <td>'.$row["owgh"].'</td>'."'n"
        .'    </tr>."'n";
    $last_pid = $row["pid"];
}
echo '</table>'."'n";

这门课的风格是:

table.myTable { border:0px;}
table.myTable tr { border-bottom:1px solid #000; }
table.myTable tr.same { border-bottom:1px solid #fff; }

试试这个

   $oldsubtotal = 0;
   $newsubtotal = 0;
   $olsgrandtotal = 0;
   $newgrandtotal = 0;
    while($row = mysql_fetch_array($query )){
        if(isset($prev) && ($prev != $row['pid'])){
            echo "<tr><td style='text-align: right'>Total</td><td>".$oldsubtotal."</td><td>".$newsubtotal."</td></tr>"
            echo "<tr><td colspan="3">-----</td></tr>";
            $oldsubtotal = 0;
            $newsubtotal = 0;
        }
        echo "<tr>";            
        echo "<td>.$row['pid'].</td>";
        echo "<td>.$row['owgh'].</td>";
        echo "<td>.$row['nwgh'].</td>";
        echo "</tr>";
        $oldsubtotal += $row['owgh'];
        $newsubtotal += $row['nwgh'];
        $olsgrandtotal += $row['owgh'];
        $newgrandtotal += $row['nwgh'];
        $prev = $row['pid'];
    }
    echo "<tr><td style='text-align: right'>Grand Total</td><td>".$olsgrandtotal."</td><td>".$newgrandtotal."</td>"