回声相同的项目一次在循环中,一次回声唯一或订购项目



我是PHP的初学者,所以请忍受我的我。

我目前的情况是,我的餐厅打印订单需要大量纸。

打印出来如下:

Receipt #: 0000
Cashier: Name here
Table #: table name
Client #: ID here
Date: 2017-03-11 8:26 PM
QTY: 4
Order:
Item 1
----------------------------------
Receipt #: 0000
Cashier: Name here
Table #: table name
Client #: ID here
Date: 2017-03-11 8:26 PM
QTY: 1
Order:
Item 2

我通常想以这种方式打印以保存纸张

Receipt #: 0000
Table #: table name
Client #: ID here
Date: 2017-03-11 8:26 PM
Cashier: Name here
QTY: 4
Order:
Item 1
Notes:
Cashier: Name here
QTY: 1
Order: 
Item 2
Notes:

我当前的查询和回声是:

 $sql = "SELECT * FROM orders  WHERE  catid = 'Drinks' and printed = 'ticket' and status = 'active' and groupid = '".$_GET['groupid']."' and tid NOT LIKE 'Upstairs%'  Order By  oid asc ";
 $result = $conn->query($sql);
 if ($result->num_rows > 0) {
 while($row = $result->fetch_assoc()) {
 $oid = $row{'oid'};
 $product = $row['pname'];
 $groupidx = $row['groupid'];
 $printreceipt = $row['printreceipt'];
 ?>
 <h4 class="printableArea" style="line-height:20px;font-size:15px; margin:0px  0px 0px 5px; color: <?php echo $color;?>;   font-family: Courier New "><hr  style="margin:0px;"/><span style="font-weight:900;"> Receipt #: <?php  $newinfo =     $row{'info'}; echo $row{'info'}; ?> <br> Cashier: <?php echo $row['user'];?><br>       Table #:
 <?php  echo $row['tid']; ?> <br> Client #: <?php  echo $row['cid']; ?> <br> Date:      <?php echo date('Y-m-d h:i A', strtotime($row['date']))?><br> QTY: <?php  echo $row['qty']; ?> <br>Order:<br> <?php if($row['viet']==""){ echo $product;}else{ echo $row['viet']; } ?  > <br> <?php  echo $row['attr']; ?> <br> Notes: <br> <?php  echo    $row['extraoptions']; ?></span></h4>
 <?php
 // Check connection
 if ($conn->connect_error) {
 die("Connection failed: " . $conn->connect_error);
 }
  $sql2 = "UPDATE orders SET printed='Yes' WHERE catid = 'Drinks' and oid = '$oid'           and (status <> 'waiting' and status <> 'deleted')";
      if ($conn->query($sql2) === TRUE) {
    //   echo "Record updated successfully";
      ?>
    <script>
 <?php
 if(!empty($printreceipt)){
 $printreceipt = $printreceipt;
 }else {$printreceipt='Bar';}
 ?>

您需要拆分跨度的输出,以便只打印一次'标头'。这是完成任务的一种方法:

我不确定该如何处理这一部分,所以我将其排除在外。另外,尚不清楚如何使用"项目"?代码中没有匹配标签。

<?php  echo $row['attr']; ?> <br>

您可能需要"调整"所需的输出,因为我只是在下面的示例中重复使用您的信息。

首先,在段循环之前向上添加此变量:

$showHeader = true;
while(($row = $result->fetch_assoc()) {

然后,我将跨度文本分开以使用该变量,该变量应显示一次标题(收据到迄今为止),然后所有其他数据(收银员的注释 - 除了项目,我在上面指出)应显示为尾线标题下方。

<h4 class="printableArea" style="line-height:20px;font-size:15px; margin:0px 0px 0px 5px; color: <?php echo $color;?>; font-family: Courier New "><hr  style="margin:0px;"/>
<span style="font-weight:900;">
<?php
if ( true === $showHeader ) { // to achieve a 'single header'
   $showHeader = false; // avoid other headers
   echo 'Receipt #: ' . $row['info'] . '<br><br>'; 
   echo 'Table #: ' . $row['tid'] . '<br>';
   echo 'Client #: ' . $row['cid'] . '<br>';
   echo 'Date: ' . date('Y-m-d h:i A', strtotime($row['date'])) . '<br>';
}
echo 'Cashier: ' . $row['user'] . '<br>';
echo 'QTY: ' . $row['qty'] . '<br>';
echo 'Order: ' . '<br>';
    if ( $row['viet']=="") {
        echo $product;
    }
    else {
        echo $row['viet'];
    }
echo '<br>' . 'Notes:' . '<br>' . $row['extraoptions'];
?>
</span></h4>

这是一般的想法。如果可能需要任何澄清,请添加评论。

最新更新