需要帮助将调查回复从HTML表单传递到MySQL表

时间:2012-12-13 16:44:07

标签: php html mysql forms http-post

我在这里有点难过......

我有一个网页,显示存储在数据库表中的调查问题列表,我正在尝试收集每个问题的评分回复(非常不同意 - >非常同意)并传递值回到我的数据库中的另一个表。

以下是表单代码的片段:

<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#和响应值。我确信这是相对简单的,但我仍然是编程的新手,并且已经花了好几个小时而几乎没有运气。

希望有人可以帮我解决这个问题,并希望在此过程中更好地解释,或者指出一个很好的资源,涵盖如何处理动态大小的表单,这些表单正在检索数据库记录并将各种信息传递回数据库。

谢谢!

2 个答案:

答案 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#。

如果有更好的方式我全都听见了......