2012-02-20 72 views
0

我有一個表,它使用$ row顯示錶中的所有記錄。它會生成多行,因爲它顯示了表中的所有值。然後在表格中我創建了一個只包含一行的表單。我想使用我的查詢中$行的studentnumber和subjectcode來記錄單個$行的一個值。對不起,我提前感到困惑的問題和感謝。

代碼:

echo "<form name=\"grades\" action=\"insert.php\" method=\"post\" onsubmit=\"javascript:return confirm('Confirm Grade Submission?');\">"; 

    echo "<td class=\"studentlist\">" . $row['studentnumber'] . "</td>"; 
    echo "<td class=\"studentlist\">" . $row['subject'] . "</td>"; 
    echo "<td class=\"studentlist\"><input type=\"text\" id= \"q1\" name=\"q1\" class=\"tbox\"></td>"; 
    echo "<td class=\"studentlist\"><input type=\"text\" id= \"q2\" name=\"q2\" class=\"tbox\"></td>"; 
    echo "<td class=\"studentlist\"><input type=\"text\" id= \"q3\" name=\"q3\" class=\"tbox\"></td>"; 

    echo "<td class=\"studentlist\"><input type=\"submit\" value=\"Submit\"></td>"; 
    echo "</form>"; 

insert.php

$studentnumber= $_POST['studentnumber']; 
$subjectcode= $_POST['subjectcode']; 

$query = ("SELECT * FROM grades WHERE studentnumber = '$studentnumber' && subjectcode = '$subjectcode'"); 
$result=mysql_query($query); 

if($result) 
    { 
    if(mysql_num_rows($result) == 1) 

     { 
     $sql="INSERT INTO grades (q1, q2, q3) 
     VALUES('$_POST[q1]','$_POST[q2]','$_POST[q3]'')"; 

      if (!mysql_query($sql,$con)) 
       { 
       die('Error: ' . mysql_error()); 
       } 
       echo "<script type='text/javascript'>alert('Grade Successfully Submitted');location.href = '../administrator/admin_home.php';</script>"; 
     } 
    } 
+0

當我按下提交按鈕,它給通知:未定義指數studentnumber和subjectcode – 2012-02-20 08:48:00

+0

我已經更新了我與應協助的進一步信息的響應 - 我原以爲你在你的例子中指定的變量名稱存在。 – 2012-02-20 09:15:00

回答

0

首先第一件事情,你需要從表單傳遞studentnumber和subjectcode到處理MySQL的第二頁。爲此,您可以使用一些隱藏的表單字段,即代替回顯studetnumber和主題的行。

echo "<td class=\"studentlist\"><input type=\"hidden\" name=\"studentnumber\" value=\" . $row['studentnumber'] . \">" . $row['studentnumber'] . "</td>"; 
echo "<td class=\"studentlist\"><input type=\"hidden\" name=\"subject\" value=\" . $row['subject'] . \">" . $row['subject'] . "</td>"; 

很難具體沒有看到成績的全表的設計,而下面會插入你試圖但是插入如果studentnumber和subjectcode形成了獨特的鍵,將錯誤的數據,該行已存在

$sql = "INSERT INTO grades (
    studentnumber, 
    subjectcode, 
    q1, 
    q2, 
    q3 
) VALUES (
    '".$_POST['studentnumber']."', 
    '".$_POST['subject']."', 
    '".$_POST['q1']."', 
    '".$_POST['q2']."', 
    '".$_POST['q3']."' 
)"; 

爲了,如果它擊中一個重複studentnumber/studentcode組合,使之更新,那麼你只需要添加 「ON DUPLICATE KEY」 的語法到最後,即

$sql = "INSERT INTO grades (
    studentnumber, 
    subjectcode, 
    q1, 
    q2, 
    q3 
) VALUES (
    '".$_POST['studentnumber']."', 
    '".$_POST['subject']."', 
    '".$_POST['q1']."', 
    '".$_POST['q2']."', 
    '".$_POST['q3']."' 
) 
ON DUPLICATE KEY UPDATE 
    q1 = VALUES(q1), 
    q2 = VALUES(q2), 
    q3 = VALUES(q3)"; 

然後,這將更新q1,q2,q3,併爲具有重複學號/科目組合的行指定任何值。

最後,如果你只是想忽略重複,那麼以下就足夠了(注意添加IGNORE)。

$sql = "INSERT IGNORE INTO grades (
    studentnumber, 
    subjectcode, 
    q1, 
    q2, 
    q3 
) VALUES (
    '".$_POST['studentnumber']."', 
    '".$_POST['subject']."', 
    '".$_POST['q1']."', 
    '".$_POST['q2']."', 
    '".$_POST['q3']."' 
)"; 
+0

謝謝!!它爲我工作。 – 2012-02-20 09:46:17

相關問題