获取$ row的值并记录到另一个表
问题描述:
我有一个表,它使用$ 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>";
}
}
答
首先第一件事情,你需要从表单传递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
当我按下提交按钮,它给通知:未定义指数studentnumber和subjectcode – 2012-02-20 08:48:00
我已经更新了我与应协助的进一步信息的响应 - 我原以为你在你的例子中指定的变量名称存在。 – 2012-02-20 09:15:00