我已经有一个while循环,根据用户预订的乘客数量,在我的表单中显示选择输入。每个下拉列表都应显示数据库中列的所有数据。问题是只有第一个下拉列表显示我获取的数据,即1到30个席位。
查询以获取当前航班的航空公司ID
$result = mysqli_query($conn,"select * from flight_seat_status where flight_number = '$_SESSION[departure]'");
我用来在循环中开始计数的变量
$print = 1; $name = 0;
我的问题循环
echo "<h1 class='adminContent_h1'>Please choose a seat</h1>";
while($print <= $_SESSION['passengers']){
echo "<label style = 'width:170px;'>". $_SESSION['firstname'][$name]."'s Seat</label>";
echo "<select class = 'content_dropdown' style = 'width:15%; margin-bottom:20px;' name = 'passengers[]'>";
while($row = mysqli_fetch_assoc($result)){
echo "<option value='".$row['seat_id']."'>".$row['seat_number']."</option>";
}
echo "</select><br>";
$print++;
$name++;
}
它可以根据用户打印出多个下拉列表,但只有第一个下拉列表包含数据。
我的代码出了什么问题?请解释
答案 0 :(得分:0)
请使用以下代码。所有座位记录您必须在乘客外环路中取一次并存储在另一个阵列中,然后您必须每次在乘客循环内使用座椅阵列。
echo "<h1 class='adminContent_h1'>Please choose a seat</h1>";
$seats = [];
while($row = mysqli_fetch_assoc($result)){
$seats[] = $row;
}
while($print <= $_SESSION['passengers']){
echo "<label style = 'width:170px;'>". $_SESSION['firstname'][$name]."'s Seat</label>";
echo "<select class = 'content_dropdown' style = 'width:15%; margin-bottom:20px;' name = 'passengers[]'>";
foreach($seats as $res_seat){
echo "<option value='".$res_seat['seat_id']."'>".$res_seat['seat_number']."</option>";
}
echo "</select><br>";
$print++;
$name++;
}
答案 1 :(得分:0)
您必须将指针重新设置为0才能再次使用结果
// set the pointer back to the beginning
mysqli_data_seek($result, 0);
while($row = mysqli_fetch_assoc($result)){
// do whatever here...
}