如何使用数据库和数组中的 fetch_assoc 创建无序列表

How to make a unordered list using fetch_assoc from database and arrays

尝试通过从数据库中选择预订参考来创建列表,将它们排序到一个数组中,然后将每个数组值传递到列表中的每个项目。例如第一个项目的第一个预订参考,第二个项目的第二个参考等... 这是代码。

<html>
  <head>
    <title>Manage booking</title>
    <link rel="stylesheet" type="text/css" href="style1.css">
  </head>
  <body>
    <h3>Oadby Granville Tennis Club Manage Booking</h3>
    <br><br><br>
    <?php 
    include "dbconnect.php";
    session_start();

    $login_ID = $_SESSION['id'];
    $query = "SELECT Booking_ID
              FROM  `booking`
              WHERE Login_ID = '$login_ID';";


    $bookingArray = array();

    $result = $mysqli -> query($query);
    while ($row = $result->fetch_assoc()){
       printf ("%s<br>", $reference = $row["Booking_ID"]);
       array_push($bookingArray, $reference . "<br>");
     }
     print_r ($bookingArray);
     ?>

    <table border="1" style="width:50%">
      <caption>Please select a booking to edit:</caption>
      <tr>
        <td>
          <ul style="list-style-type:circle">
            <?php
            $arrayNo = 1;
            while ($row = $result->fetch_assoc()){
              printf ("<li><a href='UpdateBooking.php'>Booking ID:%s</a>" . $bookingArray[$arrayNo] . "</li><br>");
              $arrayNo = $arrayNo + 1;
            }
            ?>
            <li><a href="UpdateBooking.php">Booking ID</a></li>
          </ul>
        </td>
      </tr>


  </body>
</html>

您的第一个 while ($row = $result->fetch_assoc()) {..} 将所有内容都传输到 $bookingArray,直到结果集耗尽。使用第二个 while ($row = $result->fetch_assoc()) {..},您将一无所获。此外,您对 printf 的使用很奇怪。 试试这个而不是你的第二个循环:

foreach($bookingArray as $Booking)
{
   echo "<li><a href='UpdateBooking.php'>Booking ID:$Booking</a></li><br>";
}

但是,UpdateBooking.php 不知道应该更改哪个预订。因此,您应该考虑将 BookingId 附加到 URL.

编辑 2016-03-02: 要将 BookingId 附加到 URL,您应该尝试:

foreach($bookingArray as $Booking)
{
   echo "<li><a href='UpdateBooking.php?BookingId=" . urlencode($Booking) . "'>Booking ID:$Booking</a></li><br>";
}