在 WHILE 循环中设置正确的条件语句


Set proper conditional statement in WHILE LOOP

提交mysqli_query以从购物车数据库中选择未结/未履行的订单后,结果将通过标准 WHILE 循环输出到屏幕上。

while($row = mysqli_fetch_array($oresult)) { include('orders-open.php');}

订单打开.php只是表的内部部分:

 <tr style="color:#FFF;">
    <td><?php echo $row['Buyer']; ?></td>
    <td><?php echo $row['Cart_Date']; ?></td>
    <td><?php echo $row['Item_Number']; ?></td>
    <td><?php echo $row['Item_Title']; ?></td>
    <td><?php echo $row['Item_FPrice']; ?></td>
    <td><?php echo $row['Item_Qty']; ?></td>
    </tr>

所以这是我的问题,我想在$row['Buyer']中的值发生变化时在记录之间应用一个简单的HTML" <HR>"标签,因此通过示例:

John Doe 13-9-11 123456 项目 1 $5.99 5John Doe 13-9-11 123654 项目 2 $8.99 3约翰·多伊 13-9-9 321456 项目 3 $4.99 2(HR - 此处为水平规则标记)迈克·多伊 13-9-7 123555 项目 1 $9.99 2迈克·多伊 13-9-7 123777 项目 2 $2.99 6

在 WHILE 循环中编写条件语句以将$row[买方]结果与上一个$row["买方"]结果进行比较的最佳方法是什么?

$first_run = TRUE;
$previous_buyer = NULL;
while($row = mysqli_fetch_array($oresult)) { 
      if($first_run) {
         $first_run = FALSE;
         $previous_buyer = $row['Buyer'];
      }
   include('orders-open.php');
}

然后在您的包含文件中:

<?php if($previous_buyer != $row['Buyer']) { 
    echo '<HR width="100%">'; 
    $previous_buyer = $row['Buyer'];
} ?>
<tr style="color:#FFF;">
    <td><?php echo $row['Buyer']; ?></td>
    <td><?php echo $row['Cart_Date']; ?></td>
    <td><?php echo $row['Item_Number']; ?></td>
    <td><?php echo $row['Item_Title']; ?></td>
    <td><?php echo $row['Item_FPrice']; ?></td>
    <td><?php echo $row['Item_Qty']; ?></td>
</tr>
$prev_buyer = '';
while($row = mysqli_fetch_array($oresult))
{
  if($prev_buyer !== $row['Buyer'])
  {
    //Do Something
  }
  include('orders-open.php');
  $prev_buyer = $row['Buyer']
}

正如埃隆上面所说 - 改变这个:

while($row = mysqli_fetch_array($oresult)) { include('orders-open.php');}

$old_buyer = null;
while($row = mysqli_fetch_array($oresult)) {
    if ($row['Buyer'] != $old_buyer) {
        echo '<hr>';
    }
    $old_buyer = $row['Buyer'];
    include('orders-open.php');
}
你可以

这样做:

$buyer = null ;  //Cache buyer in a variable, because $row is reset in the loop.
while($row = mysqli_fetch_array($oresult)) {
   include('orders-open.php');
   if ($buyer !== $row["Buyer"]){
     echo ($buyer !== null) ? "<hr/>" : "" ;
     $buyer = $row["Buyer"] ;
   }
}