在POST

时间:2016-09-14 20:25:44

标签: php mysql variables

我有一个数据库,在这个数据库中我有一个名为question的表,然后是另一个名为q_options的表。我的代码为每个问题提出了问题和选项。选项始终是无线电BTN,我将questionId分配给无线电BTN的名称。

<input type = "radio" name = "<?php echo $optionsQID; ?>" value = "<?php echo $optionsID; ?>">

那部分就是我无法访问我的数据库的部分。当我打印我的POST时,我可以看到已分配具有指定号码的字段但我在提交后无法从$qAnswer = $_POST[$optionsQID];检索到它。

我尝试过引号而没有引号,我也尝试在无线电BTN名称中添加和标识符以及变量,但我仍然没有得到该字段的值。

我也移动了整个

if (isset($_POST["answerQuestion"])){
            $question = $_POST["questionID"];
            $qAnswer = $_POST[$optionsQID];    

            $sql = "INSERT INTO answers (id, q_id, answer) 
            VALUES (NULL, '$question', '$qAnswer')";

            echo "Thanks for your input";

            if(!mysqli_query($link, $sql)) {
                echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
            }
        }

在第二个while循环中,这会发送$ qAnswer的正确值,但也会为每个问题创建一个记录。

这是我的代码

<?php
    if (isset($_POST["answerQuestion"])){
        $question = $_POST["questionID"];
        $qAnswer = $_POST[$optionsQID];    

        $sql = "INSERT INTO answers (id, q_id, answer) 
        VALUES (NULL, '$question', '$qAnswer')";

        echo "Thanks for your input";

        if(!mysqli_query($link, $sql)) {
            echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
        }
    }
    ?>
    <?php $questionsResult = $link->query("SELECT * FROM questions");
    while($row = mysqli_fetch_array($questionsResult)){
        $questionID = $row['id'];
        $question = $row['question'];

        ?>
        <div style = "margin: 20px 10%; padding: 50px 10%; width: 60%; border: 1px solid #444444;">
            <form role="form" action = "" method="post" id="answerForm" name = "answerForm">
                <h3><?php echo $question; ?></h3>
                <input type = "hidden" name = "questionID" value = "<?php echo $questionID; ?>">
                <?php

                $optionsResult = $link->query("SELECT * FROM q_options WHERE q_id = $questionID");
                while($optionsRow = mysqli_fetch_array($optionsResult)){
                    $optionsID = $optionsRow['id'];
                    $optionsQID = $optionsRow['q_id'];
                    $option = $optionsRow['options'];
                    ?>
                    <div style = "padding: 5px 0;">
                        <input type = "radio" name = "<?php echo $optionsQID; ?>" value = "<?php echo $optionsID; ?>"> <?php echo $option; ?>
                    </div>
                    <?php
                }
                ?>
                <button type="submit" name = "answerQuestion">Send Answer</button>
            </form>
        </div>
        <?php
    }

    ?>

2 个答案:

答案 0 :(得分:0)

确保您在本地(使用XAMPP)或在线主机上的服务器上运行脚本。几天前,我的Ajax请求中的POST数据与我的PHP文件有类似的问题,经过数小时的谷歌搜索后解决了这个问题。我可能是错的但只是确保你在服务器上运行它(如果你想尝试免费的直播主机,你可以使用000webhost)

链接 https://www.000webhost.com/ https://www.apachefriends.org/index.html

答案 1 :(得分:0)

这是我为了让这个工作继续前进而做的。至少在我完成概念验证时。

我将if (isset($_POST["answerQuestion"])){移动到了带来我问题的循环中,因为所有变量都是定义的,然后我得到我在POST上传递的值,这就产生了一个问题,它会为每个问题创建一条记录,即使它们是没有用户回答。我通过删除那些没有答案值的额外记录来解决这个新问题。这是一个肮脏的解决方案,但现在我需要花费很少的时间,直到有人给我一个更好的方法来做它。