私は、subjectという名前のテーブルと別の名前付きクラスを持っています。アプリケーションの設計は、ユーザーが最初に学校で提供されている科目を私のテーブルの「科目」に送るためのフォームを記入するようなものです。その後、彼は学校でクラスを作成するために別のフォームを塗りつぶし、作成される新しいクラスでどのようなサブジェクト(テーブルの「サブジェクト」であるか)が提供されるかを選択します。フォーム提出時に、入力は次の行を持つテーブル「クラス」に移動します。 id、className、classSubjectsここどのようにしてMySQLから複数の行を取り出し、PHPのデータベースの別のテーブルに挿入されるチェックボックスの値にしますか?
<?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>
とコントローラ/ 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();
}
?>
は、ここに私のコードです。テーブル「科目」にすべての科目をロードするが、最後の科目だけが「クラス」表に到達するように正しく表示されます。私はどこかで配列を使う必要があると感じています。
変更 '名=」 classSubjects'を 'name = 'classSubjects []'に変更する –