我有以下代码:
<?php
include_once 'init/init.funcs.php';
$_SESSION['pollid']=(int) $_GET['pollid'];
$questions = array();
$answer = $_POST['answer'];
if (!isset($_SESSION['vastamine'])) {
$result = mysql_query('SELECT kysimus FROM kysimused where kysimustik_id="' . $_SESSION['pollid'] . '"');
while($row = mysql_fetch_assoc($result)) {
$questions[] = $row['kysimus'];
}
$_SESSION['vastamine']['questions'] = $questions;
$_SESSION['vastamine']['index'] = 0;
$count = count($questions);
$_SESSION['vastamine']['count'] = $count;
}
$x = $_SESSION['vastamine']['index'];
echo $_SESSION['vastamine']['questions'][$x];
if(isset($_POST['submit'])){
$_SESSION['vastamine']['index']++;
$result2 = mysql_query('SELECT kysimus_id FROM kysimused where kysimus= "' . $_SESSION['vastamine']['questions'][$x] . '"');
$q_id = mysql_result($result2, 0);
mysql_query('INSERT INTO vastused (vastus_id, vastus,kysimus_id, vastustik_id) VALUES (NULL,"' . $answer . '","' . $q_id . '","1")');
}
?>
<br>
<form method="post">
<input type="text" name="answer" style="width:300px; height:150px;"><br>
<input name= "submit" type="submit" value="Vasta">
</form>
它用于从数据库中提问。它只需要有kysimustik_id = pollid的问题。之后,它逐个显示所有问题,当点击提交按钮时,它会逐个将每个答案存储到数据库中。一切都很好,但我有一个问题。我在数据库中有两个问题,但是当我在浏览器中运行此代码时,它会显示第一个问题,然后我回答并单击“提交”,然后再次显示第一个问题。然后我再回答一下之后它也显示了第二个问题,但是当我回答这个问题时,答案将不会存储到数据库中。它只将两个第一个答案存储到数据库中,并将其显示为我给第一个问题的第二个答案就是回答第二个问题。
我试图改变
$_SESSION['vastamine']['index'] = 0;
并给它一个值:
$_SESSION['vastamine']['index'] = 1;
没有用。之后,它显示了第二个问题两次。 我应该在代码中更改什么,以便浏览器一次显示每个问题并以正确的方式存储答案?
答案 0 :(得分:0)
你需要使用某种类型,我不了解你的架构,但我认为你可以试试这个:
$result = mysql_query('SELECT kysimus FROM kysimused where kysimustik_id="' . $_SESSION['pollid'] . '" ORDER BY `kysimus_id` ASC');
答案 1 :(得分:0)
我认为这种流程不太好用,看起来很糟糕,
您只需要以正确的方式升级代码。 你的第一个查询是好的,它将根据pollid条件从'kysimused'返回记录,现在第二步尝试使用循环条件或在从数据库中获取的记录上创建一个,并对该id进行处理
这里你只是为单个记录做,你正在创建一个记录数组和进程,