簡體   English   中英

如何從MySQL中獲取多行,並使它們成為復選框的值,以將其插入php中數據庫的另一個表中?

[英]How Do I fetch multiple rows from MySQL and and make them the value of checkbox(es) to be inserted to a another table in the database, in php?

我有一個名為subjects和另一個命名的類的表。 建築物的應用程序設計使得用戶首先填寫表格,將學校提供的科目發送到我的表“ subjects”。 然后,他填寫另一張表格在學校中創建班級,從正在創建的新班級中選擇提供哪些科目(從這些表中的“主題”中選擇)。 在提交表單時,他們的輸入將進入表“ classes”,該表具有以下行; id,className,classSubjects。

這是我的代碼:

<?php require_once 'controller/connect.php'; ?>

<!DOCTYPE html>
<html><head><title>TTApp</title></head>
<body>

<form action="controller/classReg.php" method="post">
<label>Class Name</label>
<input type="text" name="className" required="true"><br><br>
<label>Subjects Offered</label>

        <?php
        $sql = "SELECT * FROM subjects";
        $result = $connect->query($sql);

        if($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
                echo "<input type='checkbox' name='classSubjects' value=".$row['title'].">
                   ".$row['title']." ";
            }
        } 
        ?>
    <br><br><input type="submit" name="submit" value="Register Class">
</form>
</div>

</body>
</html>

和controller / classReg.php在這里:

<?php 
    require_once 'connect.php';

    if($_POST) {
        if(isset($_POST['className'])) {
            $className= $_POST['className'];   
        }

        if(isset($_POST['classSubjects'])) {
            $classSubjects  = array($_POST['classSubjects']); 
            echo $classSubjects;
        } else {
            echo "no class subject";
        }

        $sql = "INSERT INTO classes (className, classSubjects) VALUES ('$className', '$classSubjects')";
        if($connect->query($sql) === TRUE) {
            echo "<p>New Record Successfully Created</p>";
            echo "<a href='../create.php'><button type='button'>Back</button></a>";
            echo "<a href='../index.php'><button type='button'>Home</button></a>";
        } else {
            echo "Error " . $sql . ' ' . $connect->connect_error;
        }

        $connect->close();
    }

?>

這不起作用。 正確顯示,加載表“主題”中的所有主題,但只有最后一個主題進入表“類”。 感覺我需要在某個地方使用數組但是卡住了。

首先更改此行:

echo "<input type='checkbox' name='classSubjects' value=".$row['title'].">

至:

echo "<input type='checkbox' name='classSubjects[]' value=".$row['title'].">

然后你在這里r controller / classReg.php:

<?php
require_once 'connect.php';

    if ($_POST) {
        if (isset($_POST['className'])) {
            $className = $_POST['className']; 
        }


        if (isset($_POST['classSubjects'])) {
            $classSubjects = $_POST['classSubjects'];
        }else {
            echo "no class subject";
        }

        $sql  = "INSERT INTO classes (className, classSubjects) VALUES (?, ?)";
        $stmt = $connect->prepare($sql);

        foreach ($classSubjects as $key => $subject) {
            $stmt->bind_param("ss", $className, $subject);
        }
        if ($stmt->execute()) {

            echo "<p>New Record Successfully Created</p>";
            echo "<a href='../create.php'><button type='button'>Back</button></a>";
            echo "<a href='../index.php'><button type='button'>Home</button></a>";
        } else {

            echo "Error " . $connect->error;

        }

        $stmt->close();
        $connect->close();
    }

    ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM