首页 > 解决方案 > 无法将图书分配给用户

问题描述

这是我的在线图书馆管理项目,管理员可以选择一个学生姓名并从多项选择中检查一本书,然后单击按钮借阅以将这本书分配给学生。问题是我的作业有问题:结果显示,即使我们没有选择这本书,也总是将同一本书分配给学生,直到库存用完。请帮帮我。在此处输入图像描述

这是我的数据库 在此处输入图像描述

    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

解决方案


我刚刚编写了所有数据库、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;

推荐阅读