【问题标题】:Loading table values into a poplist, current value displaying correctly将表值加载到弹出列表中,当前值正确显示
【发布时间】:2020-11-29 04:17:16
【问题描述】:

我的图书馆数据库中有两个表,Books 和 BookTypes:

CREATE TABLE `books` (
  `BookID` int(11) NOT NULL,
  `ISBN` varchar(20) NOT NULL,
  `Title` varchar(50) NOT NULL,
  `Author` varchar(50) NOT NULL,
  `BookType` char(1) DEFAULT NULL,
  `Price` decimal(5,2) DEFAULT NULL
) 
CREATE TABLE `booktypes` (
  `BooktypeID` varchar(3) NOT NULL,
  `BookType` varchar(50) NOT NULL
)

当我从搜索结果页面加载编辑屏幕时,我显示了三种类型。

但无法显示当前选择的图书值(始终为数字)。

我的编辑页面代码是:

<head>
 <title>Books</title>
 </head>
 <body>
 <h1>Edit Book Information</h1>
 
     <?php
         if (empty($_GET['BookID']))
            die("You need to select a Book from the form");
         $BookID = $_GET['BookID'];
         
         //open the server connection
         require 'dbConnectLibrary.php'; 
         
         //get the record
         $sql = "SELECT * FROM books WHERE BookID = $BookID";
         
         $result = mysqli_query($conn, $sql) or die("Error editing - ". mysqli_error($conn)); 
         
         if (mysqli_affected_rows($conn) == 0)
            die("Error – record not found to edit");
        
         while ($row = mysqli_fetch_array($result))
         {
             $BookID = $row[0];
             $ISBN = $row[1];
             $Title = $row[2];
             $Author = $row[3];
             $BookType = $row[4];
             $Price = $row[5];
         }
         echo "<form action=update-book.php method=GET>";
         echo "<input type=hidden name=BookID value=$BookID>"; 
         echo "<table border=1>";
         echo "<tr><td>ISBN:</td><td><input type=text id=ISBN name=ISBN value=\"$ISBN\"></td></tr>";
         echo "<tr><td>Title:</td><td><input type=text id=Title name=Title value=\"$Title\"></td></tr>";
         echo "<tr><td>Author:</td><td><input type=text id=Author name=Author value=\"$Author\"></td></tr>";
         echo "<tr><td>Book type:</td><td><select value=\"$BookType\">";
         
                //Select 
                $sql = "SELECT BookType FROM BookTypes";                
                $result = mysqli_query($conn, $sql) or die("Error reading booktypes - ".mysqli_error($conn)); 
                
                while ($row = mysqli_fetch_array($result))
                 {      
                            if($BookType == $row[BookType])
                                echo "<option value\"$row[BookType]\" selected>$row[BookType]</option>";
                            else
                                echo "<option value\"$row[BookType]\" >$row[BookType]</option>";
                        
                 }
                
  
         echo "<tr><td>Price:</td><td><input type=text id=Price name=Price value=\"$Price\"></td></tr>";
         
         $sql = "SELECT Title, BookID, Price FROM books ORDER BY Title";
         //echo "$sql";
         $result = mysqli_query($conn, $sql) or die("Error reading books - ".mysqli_error($conn));
         
         echo "</table>";
         echo "<br><input type=submit value=update>";
     ?>
 <a href="david.php">Cancel</a>
 </body>
</html>

当我加载编辑页面时,如何确保在poplist中选择了所选书籍的booktype的当前值?

【问题讨论】:

  • 在代码中使用die(mysqli_error($$conn)); 是一个非常糟糕的主意,因为它可能会泄露敏感信息。更多解释见这篇文章:mysqli or die, does it have to die?
  • 请注意,您忘记了下拉选项值的=value\"$row[BookType]\"

标签: php html sql


【解决方案1】:

你需要做这样的事情

<option <?php if($booktype['id']==$book['id']){ ?> selected="selected" <?php }?> value='<?php echo $booktype['id'] ?>' >
        <?php echo $booktype['booktype_name'] ?>
        </option>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多