Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:测验答案一直显示出来,直到我按下下一个按钮太多次_Php_Mysqli_Radio Button - Fatal编程技术网

PHP:测验答案一直显示出来,直到我按下下一个按钮太多次

PHP:测验答案一直显示出来,直到我按下下一个按钮太多次,php,mysqli,radio-button,Php,Mysqli,Radio Button,我正在努力使我的测验有效。我遇到的问题是,当我的代码开始工作时,我可以在单选按钮旁边看到sql表的内容,四个答案按相同id(qid)排序 在我多次按下“下一步”按钮后,我看不到页面上的任何内容,我甚至多次尝试刷新浏览器。我怎样才能在我的页面上再次看到我的问题?我如何防止这种情况再次发生?我正在使用Google Chrome,但我已经在Firefox和Internet Explorer上试用过了,但没有任何效果 PHP/HTML <?php $localhost = "localhost"

我正在努力使我的测验有效。我遇到的问题是,当我的代码开始工作时,我可以在单选按钮旁边看到sql表的内容,四个答案按相同id(qid)排序

在我多次按下“下一步”按钮后,我看不到页面上的任何内容,我甚至多次尝试刷新浏览器。我怎样才能在我的页面上再次看到我的问题?我如何防止这种情况再次发生?我正在使用Google Chrome,但我已经在Firefox和Internet Explorer上试用过了,但没有任何效果

PHP/HTML

<?php

$localhost = "localhost";
$username = "root";
$password = "";
$connect = mysqli_connect($localhost, $username, $password) or die ("Kunde inte koppla");
mysqli_select_db($connect, 'wildfire');

session_start();
$qid = isset($_SESSION['qid']) ? $_SESSION['qid']+1 : 1;
$_SESSION['qid'] = $qid;

ob_start();

echo "<form>";
$sql1 = mysqli_query($connect,"SELECT * FROM question where qid ='$qid'");

while($row1=mysqli_fetch_assoc($sql1))
    echo "<input type='radio' name='answer1' value='{$row1['Point']}'>{$row1['answer']}<br>";

echo "<input type='submit' name='forward' value='next'>";
echo "</form>";


$output = ob_get_clean();
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body> 
        <?php echo $output; ?>
    </body>

</html>
试试这个:

<?
$localhost = "localhost";
$username = "root";
$password = "";
$connect = mysqli_connect($localhost, $username, $password) or die ("Kunde inte koppla");
mysqli_select_db($connect, 'wildfire');

$qid = (!isset($_POST['qid']) && intval($_POST['qid']) == 0) ? 1 : $_POST['qid']+1;

?>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body> 
        <form method="post" action="">
            <input type="hidden" name="qid" value="<?=$qid?>">
            <?php
                $sql1 = mysqli_query($connect,"SELECT * FROM question where qid =".intval($qid));
                while($row1=mysqli_fetch_assoc($sql1)){
                ?>
                <input type='radio' name='answer1' value="<?php echo $row1['Point'];?>"><?php echo $row1['answer'];?><br>
                <?php
                }
            ?>
            <input type='submit' name='forward' value='next'>
        </form>
    </body>

</html>


什么变化?


我使用
$\u POST
作为qid ID,而不是
SESSION
,因为当你刷新页面时,你需要取消设置SESSION值,所以将qid存储到
$\u POST
而不是
$\u SESSION

中,只使用php和html,这会让用户觉得网站太过时。使用jquery和ajax,使其更加用户友好。不仅如此,刷新页面的次数太多会影响你的带宽。但是我如何做到这一点呢?我宁愿不使用AJAX,因为我对它不太熟悉?奇怪的是,这在一开始就起作用了,我很确定我没有想象到任何事情loop@devpro我刚试过,但什么也没发生在页面的第一行,检查发生了什么:session_start()$qid=isset($_会话['qid'])$_会议['qid']+1:1$_会话['qid']=$qid;打印(美元会话);出口嗯,我在表格里的行上有四个错误。“未定义变量”和期望更多参数等。。但是它们已经被定义了,这真的很奇怪。@PHPScrub:我已经更新了,使用OK,现在没有错误了。但我还是得到了和我问这个问题之前一样的结果。我需要使前八个问题再次可见。@PHPScrub:根据代码,$qid右侧只显示一个问题。。当你向前移动时,$qid将更改为+1,问题也将更改。。。我是对的?哦,我明白了,实际上当你刷新页面时,你的会话被设置为上一个值。您需要取消会话以获取ist问题。。