for循环从组合框中扣除一个值

时间:2013-04-16 16:52:45

标签: php for-loop combobox

我有一个显示座位号的动态组合框。我有一个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后,它不应显示在组合框中。

3 个答案:

答案 0 :(得分:1)

循环遍历从1到$ retain-1的所有数字。这是一个逻辑错误。例: 你有10个座位。座位3被采取。你循环1到(10-1 = 9)。座位3将显示在列表中。

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

答案 1 :(得分:1)

为$ i搜索$ seatReserved然后跳过它。

 $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()。

答案 2 :(得分:1)

而不是循环遍历结果集。

更好地将您的查询更改为此类

从table1中选择*,其中seatsReserved = false;

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