内部时如何正确循环

时间:2016-04-03 14:21:06

标签: php while-loop

我的查询有点问题,我的查询是:

  SELECT * FROM tkursi WHERE tkursi.no_kursi NOT IN 
(SELECT no_kursi FROM tpesanantiket LEFT join tpenjadwalantiket ON 
tpenjadwalantiket.id_perjalanan=tpesanantiket.id_perjalanan LEFT JOIN tbus ON 
tbus.id_bus=tpenjadwalantiket.id_bus WHERE tbus.id_bus='$bus' AND 
tpesanantiket.id_perjalanan='$trip') ORDER BY no_kursi ASC

此查询显示no_kursi,其中某些数字不显示所订购的状态。

我想在列表no_kursi中更改no_kursi,其中一个状态订单仍然显示但是有评论订购,其他颜色背景或无法点击。

我尝试在里面使用,但它不能正常工作。

<table class=" table table-bordered table-striped"> 
<?php
    $s = mysqli_query($koneksidb, "SELECT * FROM tkursi ORDER BY no_kursi ASC"); 
    while ($kolomData = mysqli_fetch_array($s)) { 
    $x = mysqli_query($koneksidb, "SELECT no_kursi FROM tpesanantiket 
    LEFT join tpenjadwalantiket ON tpenjadwalantiket.id_perjalanan=tpesanantiket.id_perjalanan
    LEFT JOIN tbus ON tbus.id_bus=tpenjadwalantiket.id_bus 
    WHERE tbus.id_bus='$Bus' AND tpesanantiket.id_perjalanan='$Trip'
GROUP BY no_kursi");
     while ($kolomx = mysqli_fetch_array($x)) { 
?>   
    <tr>   
<td width="200"> <input type="radio" name="tambah3" value="<?php echo $kolomData['no_kursi']; ?>"  
<?php echo ($data7==$kolomData['no_kursi']) ?  "checked" : "" ;  ?>/>
<label  class="inline" for="<?php echo $kolomData['no_kursi']; ?>">
<?php echo $kolomData['no_kursi']; ?> &nbsp; 
<?php if ($kolomData['no_kursi']==$kolomx['no_kursi']) {
?> ordered 
<?php } ?>
</label> </td> 
    </tr>   
<?php  
} 
    }?>

结果在一些no_kursi中排序,但它循环太多了。

已编辑数据库显示:
$ s:no_kursi
001
002
003
004
005
006
007
...... 043
$ x:no_kursi
005
006

结果:
 no_kursi
001
001
002
002
003
003
004
004
005订购了 005
006订购了 006
007
007
...... 043
043

结果循环多达$ x结果。

1 个答案:

答案 0 :(得分:1)

您可以更改查询..

  

SELECT tkursi。*,CASE WHEN q.no_tkursi is NULL,那么0 ELSE   1结束AS is_orderer FROM tkursi LEFT JOIN(选择no_tkursi FROM   tpesanantiket       LEFT join tpenjadwalantiket ON tpenjadwalantiket.id_perjalanan = tpesanantiket.id_perjalanan       LEFT JOIN tbus ON tbus.id_bus = tpenjadwalantiket.id_bus       WHERE tbus.id_bus ='$ Bus'AND tpesanantiket.id_perjalanan ='$ Trip')AS q ON q.no_tkursi = tkursi.no_tkursi ORDER BY tkursi.no_tkursi

并且您有一个独特的查询。

这个查询可能更好。没有subquerys。但我不知道你的数据库结构。

你的结果应该是......

no_kursi | .... | is_orderer

1 | .... | 0

...

5 | .... | 1

6 | .... | 1

7 | .... | 0