我在这里有点难过......
我有一个网页,显示存储在数据库表中的调查问题列表,我正在尝试收集每个问题的评分回复(非常不同意 - >非常同意)并传递值回到我的数据库中的另一个表。
以下是表单代码的片段:
<form action="submitAnswers.php" name="subAns" method="post">
<fieldset>
<legend>Survey Questions</legend>
<input type="hidden" name="survey_id" value="<?php echo ($survey_id); ?>">
<table width=90% border=0 cellpadding='2' cellspacing='2'?>
<tr bgcolor=#D0D0D0>
<th>Question</th>
<th>Strongly Disagree</th>
<th>Somewhat Disagree</th>
<th>Neither Disagree nor Agree</th>
<th>Somewhat Agree</th>
<th>Strongly Agree</th>
</tr>
<tr>
<?php
while ($row = mysql_fetch_array($res, MYSQL_ASSOC))
{
echo "<td bgcolor='#E8E8E8'><font size='-1'>$row[quest_order]) $row[quest_text]</font></td>";
for ($i = 0; $i < 5; $i++)
{
//echo "<input type='hidden' name='qID' value='$quest_id'>";
echo "<td bgcolor='#E8E8E8'><input type='radio' name='$row[quest_id]' value='$i'></td>";
}
echo "</tr>";
}
?>
<br>
</table><br>
<input type="submit" name="submitAnswers" value="Submit Survey"></fieldset>
</form>
这是'submitAnswers.php'文件中的PHP:
$survey_id=$_POST['survey_id'];
$sql = "INSERT INTO survey_responses (survey_id)
VALUES ('$survey_id')";
$res = send_sql($sql, $link, $db);
foreach($_POST['quest_id'] as $id=>$value)
{
$sql = "INSERT INTO survey_answers (response_id, quest_id, response_value)
VALUES (LAST_INSERT_ID(), $id, '$value')";
$res = send_sql($sql, $link, $db) or die("Cannot add survey");
}
我在'survey_responses'表中的插入语句工作正常,但我不知道如何纠正用于获取每个问题的响应分数的单选按钮。这些值是通过POST传递的(我通过查看返回的print_r($_POST);
确认了这一点,例如:
数组([survey_id] =&gt; 4 [6] =&gt; 0 [5] =&gt; 1 [4] =&gt; 2 [3] =&gt; 3 [2] =&gt; 4 [1] =&gt; 3 [submitAnswers] =&gt;提交调查)
但显然我错了,因为我无法成功迭代并为每个插入问题ID#和响应值。我确信这是相对简单的,但我仍然是编程的新手,并且已经花了好几个小时而几乎没有运气。
希望有人可以帮我解决这个问题,并希望在此过程中更好地解释,或者指出一个很好的资源,涵盖如何处理动态大小的表单,这些表单正在检索数据库记录并将各种信息传递回数据库。
谢谢!
答案 0 :(得分:0)
使用
$sql = "INSERT INTO survey_answers (response_id, quest_id, response_value)
VALUES ('".LAST_INSERT_ID()."', '".$id."', '."$value."')";
代替
$sql = "INSERT INTO survey_answers (response_id, quest_id, response_value)
VALUES (LAST_INSERT_ID(), $id, '$value')";
答案 1 :(得分:0)
好的我觉得我有这个舔,虽然可能有更好的解决方案。在我的表单中,我将单选按钮更改为如下所示:
echo "<td bgcolor='#E8E8E8'><input type='radio' name='quest".$row[quest_id]."' value='$i'></td>";
唯一的变化是在name属性中添加'quest'作为ID#的前缀。在我的PHP文件中:
foreach ($_POST as $name=>$value)
{
if (strpos($name, "quest") !== FALSE)
{
$qID = substr($name, 5);
$sql = "INSERT INTO survey_answers (response_id, quest_id, response_value)
VALUES (LAST_INSERT_ID(), '$qID', '$value')";
$res = send_sql($sql, $link, $db) or die("Cannot add survey");
}
}
我正在检查那些带有'quest'前缀的帖子的值,然后通过substr
提取ID#。
如果有更好的方式我全都听见了......