【发布时间】: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]\"。