0

我有一个显示座位号的动态组合框。我有一个从组合框中扣除选定值的 for 循环。

function display_seatNo() {
 $query = "SELECT * FROM table1 WHERE ID = 1";
 $result = mysql_query($query) or die("Failed to fetch records");
 $rows = mysql_fetch_array($result);
 $seatNo = $rows['SeatNo']; 
 $totalSeat = $rows['TotalSeats'];
 $seatReserved = $rows['SeatsReserved'];

 $remain = $totalSeat - $seatReserved; 

 $length = count($remain);
 for($i=1; $i<=$remain-1; $i++){
   echo "<option value=\"$i\" ";
   echo " $i";
   echo "> $i </option>";   
  }
}

<select name="cbSeatNo" id="cbSeatNo" class="cb1">
   <?php display_seatNo(); ?>
</select>

问题是所选值没有消除。示例:- 预留座位号 1 后,它不应显示在组合框中。

4

3 回答 3

1

您遍历从 1 到 $remain-1 的所有数字。那是一个逻辑错误。示例:您有 10 个席位。座位 3 被占用。您循环 1 到 (10-1 = 9)。座位 3 将显示在列表中。

相反,您需要从数据库中获取实际可用(或已占用)的席位,而不仅仅是计数。

于 2013-04-16T17:02:13.473 回答
1

在 $seatReserved 中搜索 $i 然后跳过它。

 $seatReserved = empty($seatReserved) ? array() : $seatReserved;
 for($i=1; $i<=$remain-1; $i++){
     if((array_search( $i,  $seatReserved)) !== false) {
         continue;
     }
   echo "<option value=\"$i\" ";
   echo " $i";
   echo "> $i </option>";   
  }

编辑:以防0个座位被保留,我给$seatReserved一个array()的默认值。

于 2013-04-16T17:18:33.920 回答
1

而不是循环遍历结果集。

最好将您的查询更改为这样的内容

Select * from table1 where seatReserved = false ;

对于每个预订,将 seatReserved 值设置为 false。

于 2013-04-16T18:02:03.357 回答