如何使用数据库和数组中的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不知道应该更改哪个预订。因此,您应该考虑将预订ID附加到URL中。

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

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