【问题标题】:How to get record in while loop如何在while循环中获取记录
【发布时间】:2015-05-26 08:51:33
【问题描述】:

产品表:

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 月 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
-----------------------------------
 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 ..我只想要我的结果在上述格式

【问题讨论】:

  • 这里有人吗?? ..请帮助我在 php mysql 中使用上述格式
  • 至少总重量值..请在这里的任何人?

标签: php html mysql loops while-loop


【解决方案1】:

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']; }

【讨论】:

  • 嘿,感谢您的大力支持...请检查我的更新问题...请帮助我..请在此,因为我没有得到总和值
【解决方案2】:

最好的方法是在单个查询中完成,以避免多个查询的加载时间和在 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; }

【讨论】:

  • 请检查我想要的结果...谢谢回复
  • @user3209031如果你的意思是 -----,你的首选结果会与这个 ----- 混淆> 然后用这一行反转 if 语句就很容易了。
  • @ nikos,你的权利,我错过了“colspan”,我纠正了这一点,但如果我在我的 while 循环中首先使用“if 条件”(这与“Md. Sahadat Hossain 给出的下面的分析器相同) “)然后它的作品,但我在我的结果开始时得到额外的“tr td”行,但如果我在结尾使用“if condition”(这与“Héctor Prats”给出的以下答案相同)那么我会以错误的方式得到结果... ..:(
  • 你? ..请帮助我
  • 然后在我的示例中替换: $class= ($last_pid == $row['pid']) ? ' class="相同"' : '';像这样: echo ($last_pid != $row['pid']) ? "-----" : "";
【解决方案3】:

试试这个

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

【讨论】:

  • 它不仅是 pid 的条件 :: pid=12 的结果应该在同一部分,请看我想要的..
  • 是的,我试过了,但桌子的形状不正确,都排在同一排...请参阅
  • 嘿,你 der ..请检查我想要的结果 ..我得到的结果是 pid=12 在同一部分,但表结构已损坏..请检查我的结果
  • 你的答案有效,但我在结果的开头得到了额外的“----”行
  • 产品 id = 12 仅一次,其余详细信息两次 i 表示:12 | 1.5 | 0.6 ------------------------ | 1.5 | 0.3 和 12 相同,只显示 12 一次,你能帮我吗?在你的答案上面......一切都很完美,只是你回答上面的这个新功能
猜你喜欢
  • 2019-04-21
  • 2015-09-05
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 2018-09-08
  • 1970-01-01
相关资源
最近更新 更多