2016-04-23 5 views
0

HTML HTMLの選択オプションに複数のデータベースと私のテーブルteacher_cvを更新更新クエリベース

  <input type="hidden" name="coreid[]" value="<?php echo $coreid; ?>"> 
      <input type="hidden" name="student_no" value="<?php echo $student_no; ?>"> 

      <div class="col col-lg-2 col-md-2 col-xs-2"> 
       <div class="form-group"> 
        <select name="corevalues[]" class="form-control"> 
         <option value="">Select</option> 
         <?php 

       $result11 = mysqli_query($con, "SELECT * FROM core_values"); 

       while ($row11 = mysqli_fetch_array($result11)){ 
        $idcore = $row11['id']; 
        $levelid = $row11['marking']; 
        $level_name = $row11['non_marking']; 
        if ($first == $level_name){ 
         echo '<option value="'.$level_name.'" selected="selected">'.$level_name.'</option>'; 
        } else{ 
         echo '<option value="'.$level_name.'">'.$level_name.'</option>'; 
        } 
       } 
         ?> 
        </select> 
       </div> 
      </div> 

PHP

$coreid = $_POST['coreid']; 
$grade = $_POST['corevalues']; 
$student_no = $_POST['student_no']; 
$quarter = $_POST['quarter']; 
$marking = $_POST['marking']; 
$quarter2 = $_POST['quarter2']; 

$xx = 0; 



foreach ($coreid as $sid) { 
    foreach ($grade as $sid2) { 
     $checkrecords = mysqli_query($con, "SELECT * FROM teacher_cv WHERE coreid='".$sid."' AND student_no='".$student_no."'"); 

      if (mysqli_num_rows($checkrecords) > 0){ 

       $sql = "UPDATE teacher_cv 
         SET $quarter='".$sid2."' 
           WHERE coreid='".$sid."' AND 
            student_no='".$student_no."'"; 

      if (!mysqli_query($con,$sql)) 
      { 
       die('Error: 1 ' . mysqli_error($con)); 
      } 
       $xx++; 
      } else{ 

       $sql = "INSERT INTO teacher_cv 
       (  coreid, 
          $quarter, 
           student_no) 
      VALUES (  '".$sid."', 
          '".$sid2."', 
           '".$student_no."')"; 

       if (!mysqli_query($con,$sql)) 
       { 
        die('Error: 1 ' . mysqli_error($con)); 
       } 
       $xx++; 
     } 
    } 
} 

イム。教師の学生の中核となる価値の基準を示すこと。

しかし、私のテーブルの列であるfirst_qについては、UpdateとInsert Queryが常に最後の部分を得ているようです。これまでにiveが行ったサンプルがあります。 enter image description here

コアIDが動作しているようですが、HTML Selectで選択した標準が常に配列の最後の部分を取得しています。配列の最後の部分ではなく、すべての配列を挿入/更新できますか?

UPDATE

私は、その、本当に配列かどうか、ここを渡すと、結果であるかどうかを確認するためにforeachの前にそれを印刷してみました。

Array ([0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5) 
    Array ([0] => Sometimes Observed [1] => Rarely Observed [2] => Rarely Observed [3] => Not Observed [4] => Sometimes Observed) 

今、私はアレイが本当に通過していることを知っています。なぜ最後の配列だけがデータベースに入力されるのですか?何が間違っていますかPHPコード

+0

foreachが始まる直前に$ coreidと$ gradeを印刷します... !!配列か単一の値を返しますか? – Kunal

+0

$グレードのための@Kunalは単なる価値を返すと思います。 –

+0

@Kunal私はあなたの提案をforeachとその返却の前に印刷しようとしましたArrayArray –

答えて

1

$coreid$gradeのネストループを使用しないでください。これは、各配列の対応する要素が一緒になるためです。あなたはそれらのすべての間にクロスプロダクトを作成していました。

foreach ($coreid as $i => $sid) { 
    $sid2 = $grade[$i]; 
    ... 
} 

また、MySQLIを使用しているため、クエリに変数を連結する代わりに、準備済みのクエリを使用する必要があります。また、ユニークなインデックスが(coreid, student_no)にある場合は、ON DUPLICATE KEY UPDATEオプションを使用してすべての操作をINSERTクエリで行うことができます。

$stmt = mysqli_prepare($con, "INSERT INTO teacher_cv (coreid, quarter, student_no) 
    VALUES(?, ?, ?) 
    ON DUPLICATE KEY UPDATE quarter = VALUES(quarter)" or die(mysqli_error($con));; 
mysqli_stmt_bind_param($stmt, "sss", $sid, $sid2, $student_no); 

foreach ($coreid as $i => $sid) { 
    $sid2 = $grade[$i]; 
    mysqli_stmt_execute($stmt); 
    $xx++; 
} 
+0

最後に今働いていただきありがとうございます:D私はあなたにコーヒーを買うことができたらいいと思います.... –

関連する問題