0

我正在制作一个考试门户,我可以在其中选择进行考试/测验。现在我添加了 2 个按钮,即 Next 和 Previous 。我想在按钮单击上获取问题及其选项。我的数据库具有以下结构: Question(qid,question,option1,option2,option3,option4,right_option) 我正在尝试做什么:

<input id="first" type="button" value="NEXT" onClick = "show_next()">
<input id="second" type="button" value="PREV" onClick = "show_prev()">

<script>
function show_next()
{
<?php 
$question_no; //my global php variable to keep track of question id
$question_no = $question_no + 1; 
show_question($question_no); //php function which shows data according to question no 
?>
 }
function show_prev()
{
<?php 
if($question_no>0)
{
$question_no = $question_no-1;
show_question();
}
else
{
?>
alert("Wrong Operation");
<?php
}
?>
}
</script>

我是 php 和 javascript 的新手,请为我的问题建议正确的方法以及可能的编码片段

4

2 回答 2

1

使用 jQuery/AJAX。您所要做的就是动态管理 Offset 和 Limit。例如

让我们考虑一下您一次显示 1 个问题及其选项。

你的 html 文件将是。

<input id="first" type="button" value="NEXT" onClick = "show_next()">
<input id="second" type="button" value="PREV" onClick = "show_prev()">
<input id="offset" type="hidden" value="0">

在您的 javascript 文件中

function show_next()
{
  var offset=$('#offset').val();
  $.post('GetQuestion.php',{offset:offset},function(data){
    $('#question_answer').html(data);
    $('#offset').attr('value',offset+1);

  })
}

function show_prev()
{
  var offset=$('#offset').val();
  $.post('GetQuestion.php',{offset:offset},function(data){
    $('#question_answer').html(data);
    $('#offset').attr('value',offset-1);

  })
}

在您的 GetQuestion.php 文件中,您可以使用 $_POST 访问偏移值。您所要做的就是在查询中使用该值。

mysql_query("SELECT * FROM questions LIMIT ".$_POST['offset'].",1");

在 php 文件中回显您的查询结果,以便它可用于 javascript 中的 var 数据。

于 2013-04-10T11:07:40.677 回答
0

据我所知,PHP是在服务器上执行的,JS是在客户端执行的,所以不能混用。

你必须选项。

  1. 在不同的 div 中加载所有问题并隐藏它们。然后您可以使用下一个和上一个按钮一一显示。

  2. 使用如下参数构建页面:http://myapp.com/question/1并制作 Next BUtton /question/2 问题页面现在应该只包含 1 个问题。

编辑:

这是1.方法的小提琴:http: //jsfiddle.net/zj7ts/

$('.question').hide()

 $question_shown = $('.question').first().show();

$('.next').click(function(){
    $('.question').hide()
    $question_shown = $question_shown.next().show();
});

$('.prev').click(function(){
    $('.question').hide()
    $question_shown = $question_shown.prev().show();
});
于 2013-04-10T10:57:50.897 回答