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