2017-06-26 8 views
0

私は、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(); 
    } 

?> 

は、ここに私のコードです。テーブル「科目」にすべての科目をロードするが、最後の科目だけが「クラス」表に到達するように正しく表示されます。私はどこかで配列を使う必要があると感じています。

+0

変更 '名=」 classSubjects'を 'name = 'classSubjects []'に変更する –

答えて

0

最初の変更この行:

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

へ:

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

その後Rコントローラここで/ 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(); 
    } 

    ?> 
関連する問題