2017-09-15 125 views
0

美好的一天!我在存儲數據庫中的值時遇到問題。該程序的流程是用戶將輸入他將獲得多少主題。例如,他/她可以放6個科目。所以它會釋放6個輸入類型,其值等於文本。我的問題是我的數據庫中沒有6行,因爲用戶需要6個輸入。從while循環插入多行到數據庫

Image of Front End

HTML/PHP

<form method="POST"> 
    <table> 
     <tr> 
      <td>SUBJECT CODE/SUBJECT DESCRIPTION/SEMESTER</td> 
     </tr> 
     <?php $counter=1 ; 
      while($counter <= $subj){?> 
      <tr> 
       <td> 
        <select name="sub"> 
         <?php $select=mysql_query("SELECT * FROM subject 
                WHERE course_code = '$course' AND semester = '$sem'"); 
           while($rows=m ysql_fetch_assoc($select)){ 
            $code=$rows['subj_code']; 
            $desc=$rows['subj_desc']; 
            $units=$rows['units']; 
            $yr=$rows[ 'year_level']; 
         ?> 
           <**option value="<?php echo $codes[$code]; ?>"> 
            <?php echo $code. " - ".$desc; ?> 
           </option>** 
          <?php } ?> 
        </select> 
       </td> 
       <td> 

       </td> 
      </tr> 
      <?php $counter++; } } ?> 
     <tr> 
      <td> 
       <input type="submit" name="add" value="add subjects"> 
      </td> 
     </tr> 
    </table> 
</form> 

PHP/SQL

<?php 
if (isset($_POST['add'])) { 
    $data = array(); 
    $subject = $_POST['sub']; 
    $sem  = $_SESSION['sem']; 

    for ($i = 0; $i < count($subject); $i++) { 
     $subject = mysql_real_escape_string($subject[$i]); 
     $sem  = mysql_real_escape_string($sem[$i]); 
     $yr  = mysql_real_escape_string($yr[$i]); 
     $fac  = mysql_real_escape_string($fac[$i]); 
     $col  = mysql_real_escape_string($col[$i]); 

     $set = mysql_query("SET foreign_key_checks = 0"); 
     if (!$set) { 
      die("Foreign key SET failed"); 
     } else { 
      $insertmid = mysql_query("INSERT INTO grade_midterm 
            (midterm_grade, semester, year_level, subj_code, stud_id, fac_id, col_code) 
             VALUES ('NA','$sem','$yr','$subject', '$user','$fac','$col')"); 
      if (!$insertmid) { 
       die("Failed to insert midterm" . mysql_error()); 
      } else { 
       $insertfinal = mysql_query("INSERT INTO grade_final 
              (final_grade, semester, year_level, subj_code, stud_id, fac_id, col_code) 
              VALUES ('NA','$sem','$yr','$subject','$user','$fac','$col')"); 
       if (!$insertfinal) { 
        die("Failed to indert final"); 
       } else { 
        $set2 = mysql_query("SET foreign_key_checks = 1"); 
        echo "<script>alert('Success Adding Subject');</script>"; 
       } 
      } 
     } 
    } 
} 
?> 
+0

首先的陣列,用戶應立即停止使用mysql_功能。他們現在已經過時了一段時間。使用pdo或mysqli_ instaed –

+0

是的,我會先生!即時轉向PHP7格式。但我大多熟悉php5。即時通訊只是害怕我會卡在一些部分,我只有很短的時間完成這項任務。但我正在研究mysqli。 :) –

回答

1

你有名字的子選擇框在循環

<select name="sub"> 

這意味着每ñ EXT選擇框將覆蓋前一個 使用

<select name="sub[]"> 

創建在$ _ POST變量

+0

先生,我不想覆蓋它。我想如果用戶輸入3個輸入。所有這些都將存儲在數據庫中。謝謝你的回答先生。 –