使用while循环从数据库中删除多个html下拉列表

时间:2016-08-31 13:30:54

标签: php html mysql

我已经有一个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++;
     }

它可以根据用户打印出多个下拉列表,但只有第一个下拉列表包含数据。

我的代码出了什么问题?请解释

2 个答案:

答案 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...
    }