php - 无法将图书分配给用户
问题描述
这是我的在线图书馆管理项目,管理员可以选择一个学生姓名并从多项选择中检查一本书,然后单击按钮借阅以将这本书分配给学生。问题是我的作业有问题:结果显示,即使我们没有选择这本书,也总是将同一本书分配给学生,直到库存用完。请帮帮我。
if(!ISSET($_POST['student_no'])){
echo '
<script type = "text/javascript">
alert("Select student name first");
window.location = "borrowing.php";
</script>
';
}else{
if(!ISSET($_POST['selector'])){
echo '
<script type = "text/javascript">
alert("Selet a book first!");
window.location = "borrowing.php";
</script>
';
}else{
foreach($_POST['selector'] as $key=>$value){
$book_qty = $value;
$student_no = $_POST['student_no'];
$book_id = $_POST['book_id'][$key];
$date = date("Y-m-d", strtotime("+8 HOURS"));
$conn->query("INSERT INTO borrowing VALUES(NULL, '$book_id', '$student_no', '$book_qty', '$date', 'Borrowed')") or die(mysqli_error($conn));
echo '
<script type = "text/javascript">
alert("Successfully Borrowed");
window.location = "borrowing.php";
</script>
';
}
}
}
解决方案
我刚刚编写了所有数据库、PHP、SQL 之类的解决方案,如果你想添加每本书,每笔交易都带有新的借贷 ID。如果您希望一个借用有更多交易的可能性,您必须使用 4 表。但是,试试我的例子,我们可以讨论一下。这就是您需要复制、测试和分析的所有内容。我使用了您可以在 w3schools.com 上看到的基本结构的案例循环。插入时我没有编写准备好的语句和绑定参数的脚本,如果我的解决方案对你有好处,你编写脚本。
lib3.php
<?php
if (!isset($_GET["page"])) {
echo "student drop-down menu";
?>
<p>Student:</p>
<br>
<form action='lib3.php' method='get'>
<select name="student" onchange="this.form.submit();">
<?php
$link = mysqli_connect("localhost", "root", "", "library");
$sql = "SELECT DISTINCT studentId, studentName
FROM students";
$result = mysqli_query($link, $sql);
print "<option value='students' selected>Students</option>";
While ($row = mysqli_fetch_assoc($result))
{
if ($row["studentId"] == $_GET["student"]) {
print "<option value=" . $row["studentId"] . " selected>"
. $row["studentName"] . "</option>";
}
else {
print "<option value=" . $row["studentId"] . ">"
. $row["studentName"] . "</option>";
}
}
?>
</select>
<input type="text" name="page" hidden value="1" />
</form>
<?php
}
else {
$page = $_GET["page"];
switch ($page) {
case "1":
echo "student drop-down menu &
books drop-down-menu";
$student = $_GET["student"];
?>
<p>Student:</p>
<br>
<form action='lib3.php' method='get'>
<select name="student" onchange="this.form.submit();">
<?php
$link = mysqli_connect("localhost", "root", "", "library");
$sql = "SELECT DISTINCT studentId, studentName
FROM students";
$result = mysqli_query($link, $sql);
print "<option value='students' selected>Students</option>";
While ($row = mysqli_fetch_assoc($result))
{
if ($row["studentId"] == $_GET["student"]) {
print "<option value=" . $row["studentId"] . " selected>"
. $row["studentName"] . "</option>";
}
else {
print "<option value=" . $row["studentId"] . ">"
. $row["studentName"] . "</option>";
}
}
?>
</select>
<input type="text" name="page" hidden value="1" />
</form>
<p>Book:</p>
<br>
<form action='lib3.php' method='get'>
<select name="book" onchange="this.form.submit();">
<?php
$link = mysqli_connect("localhost", "root", "", "library");
$sql = "SELECT DISTINCT bookId, bookName
FROM books";
$result = mysqli_query($link, $sql);
print "<option value='books' selected>Books</option>";
While ($row = mysqli_fetch_assoc($result))
{
if ($row["bookId"] == $_GET["book"]) {
print "<option value=" . $row["bookId"] . " selected>"
. $row["bookName"] . "</option>";
}
else {
print "<option value=" . $row["bookId"] . ">"
. $row["bookName"] . "</option>";
}
}
?>
</select>
<input type="text" name="student" hidden value="<?php echo $student ?>" />
<input type="text" name="page" hidden value="2" />
</form>
<?php
//script
break;
case "2":
echo "student drop-down menu &
books drop-down-menu &
button borrow";
echo "student drop-down menu &
books drop-down-menu";
$student = $_GET["student"];
$book = $_GET["book"];
?>
<p>Student:</p>
<br>
<form action='lib3.php' method='get'>
<select name="student" onchange="this.form.submit();">
<?php
$link = mysqli_connect("localhost", "root", "", "library");
$sql = "SELECT DISTINCT studentId, studentName
FROM students";
$result = mysqli_query($link, $sql);
print "<option value='students' selected>Students</option>";
While ($row = mysqli_fetch_assoc($result))
{
if ($row["studentId"] == $_GET["student"]) {
print "<option value=" . $row["studentId"] . " selected>"
. $row["studentName"] . "</option>";
}
else {
print "<option value=" . $row["studentId"] . ">"
. $row["studentName"] . "</option>";
}
}
?>
</select>
<input type="text" name="page" hidden value="1" />
</form>
<p>Book:</p>
<br>
<form action='lib3.php' method='get'>
<select name="book" onchange="this.form.submit();">
<?php
$link = mysqli_connect("localhost", "root", "", "library");
$sql = "SELECT DISTINCT bookId, bookName
FROM books";
$result = mysqli_query($link, $sql);
print "<option value='books' selected>Books</option>";
While ($row = mysqli_fetch_assoc($result))
{
if ($row["bookId"] == $_GET["book"]) {
print "<option value=" . $row["bookId"] . " selected>"
. $row["bookName"] . "</option>";
}
else {
print "<option value=" . $row["bookId"] . ">"
. $row["bookName"] . "</option>";
}
}
?>
</select>
<input type="text" name="student" hidden value="<?php echo $student ?>" />
<input type="text" name="page" hidden value="2" />
</form>
<form action="add_borrowing.php" method="post">
<input type="text" name="book" value="<?php print $book; ?>" />
<input type="text" name="student" value="<?php print $student; ?>" />
<input type="submit" value="Borrow" />
</form>
<?php
if (!isset($_GET["raw"])) {
echo "";
}
else {
echo "Borrowing has been successfully added!";
}
break;
}
}
?>
add_borrowing.php
<?php
$book = $_POST["book"];
$student = $_POST["student"];
$link = mysqli_connect("localhost", "root", "", "library");
$sql = "INSERT INTO borrowing (bookId, studentId) VALUES ($book, $student)";
mysqli_query($link, $sql);
mysqli_close($link);
header("Location:lib3.php?book=$book&student=$student&page=2&raw=1");
数据库
-- Database: `library`
--
-- --------------------------------------------------------
--
-- Table structure for table `books`
--
CREATE TABLE `books` (
`bookId` int(11) NOT NULL,
`bookName` char(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `books`
--
INSERT INTO `books` (`bookId`, `bookName`) VALUES
(1, 'Book1'),
(2, 'Book2');
-- --------------------------------------------------------
--
-- Table structure for table `borrowing`
--
CREATE TABLE `borrowing` (
`borrowingId` int(11) NOT NULL,
`bookId` int(11) DEFAULT NULL,
`studentId` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `borrowing`
--
INSERT INTO `borrowing` (`borrowingId`, `bookId`, `studentId`) VALUES
(8, 2, 1),
(9, 1, 2),
(10, 2, 2),
(11, 2, 1),
(12, 1, 1),
(13, 2, 2),
(14, 2, 1);
-- --------------------------------------------------------
--
-- Table structure for table `students`
--
CREATE TABLE `students` (
`studentId` int(11) NOT NULL,
`studentName` char(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `students`
--
INSERT INTO `students` (`studentId`, `studentName`) VALUES
(1, 'Student1'),
(2, 'Student2');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `books`
--
ALTER TABLE `books`
ADD PRIMARY KEY (`bookId`);
--
-- Indexes for table `borrowing`
--
ALTER TABLE `borrowing`
ADD PRIMARY KEY (`borrowingId`);
--
-- Indexes for table `students`
--
ALTER TABLE `students`
ADD PRIMARY KEY (`studentId`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `books`
--
ALTER TABLE `books`
MODIFY `bookId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT for table `borrowing`
--
ALTER TABLE `borrowing`
MODIFY `borrowingId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15;
--
-- AUTO_INCREMENT for table `students`
--
ALTER TABLE `students`
MODIFY `studentId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
COMMIT;
推荐阅读
- r - 当单击图表中的某处时,带有表格的绘图单击事件将再次消失
- amazon-web-services - 使用 Prod 数据刷新测试数据
- java - 使用java代码访问文件共享,得到503服务不可用错误
- python - 模型输入:传递给模型的 Numpy 数组列表不是模型预期的大小。预计会看到 1 个数组,但得到了 142 个数组的列表
- python - 多个子进程如何在 python 中写入同一个共享内存数据帧?
- javascript - 如何在Vue中将重复的组件事件传递给父级
- javascript - 无法在函数中设置值
- excel - 查找重复项和重命名主/子
- javascript - 鼠标事件的问题
- mongodb - 无法启动 Mongo DB