rand.php  从数据库中随机获取试题NUM道试题的id号,并用SESSION存储....<?php
session_start();
mysql_connect("localhost","root","123456")or die("无法连接MySQL服务器");
mysql_select_db("klm")or die("无法连接数据库");
mysql_query("SET NAMES GBK"); //Make The MySQL Database could accept cn
define("NUM",3); //定义随机取题的数目
$query=mysql_query("select qid from question where chapter='$_GET[chapter]'");
while($row=mysql_fetch_row($query)){
$id[]=$row[0];//用数组$id接收值
}
$rand_key=array_rand($id,NUM);//在数组中随机获取NUM道试题的键名key,并赋给数组
for($i=0;$i<NUM;$i++){
$rand_id[]=$id[$rand_key[$i]];//用$rand_id存放要输出到页面的试题id
}
$_SESSION['$rand_id']=$rand_id;
print_r($rand_id);
mysql_close();
?>
print.php  假设总记录数NUM=100,每页显示20条记录,要有首页、尾页、上一页、下一页以及数字1、2、3、4、5的列表..<?php
session_start();
mysql_connect("localhost","root","123456")or die("无法连接MySQL服务器");
@mysql_select_db("klm")or die("无法连接数据库");
mysql_query("SET NAMES GBK"); //Make The MySQL Database could accept cn$rand_id=$_SESSION['$rand_id'];
define("NUM",3); //定义随机取题的数目
//print_r($rand_id);
?>
<form action="../user/save.php" method="post">
<div align="center">
<table width="800">
<?php
for($i=0;$i<NUM;$i++){
$j=$i+1;
$key=$i+NUM;//使得传递key和传递choice的name区分开来,以免在save.php中进行评分时出现错误
$query=mysql_query("select * from question where qid='$rand_id[$i]'");//我是利用for循环从数据库中一笔一笔地抓取资料,然后再输出到页面上
$rs=mysql_fetch_array($query,MYSQL_ASSOC);//得到一个关联索引的数组
?>
<tr>
<td>
题目<?php echo $j.".".$rs[question];?>( )
</td>
    </tr>
<tr>
<td>
<input type="radio" name="<?php echo $i;?>" value="A"/>A. <?php echo $rs[option1];?>
</td>
</tr>
<tr>
<td>
<input type="radio" name="<?php echo $i;?>" value="B"/>B. <?php echo $rs[option2];?>
</td>
</tr>
    <tr>
<td>
<input type="radio" name="<?php echo $i;?>" value="C"/>C. <?php echo $rs[option3];?>
</td>
</tr>
<tr>
<td>
<input type="hidden" name="<?php echo $key;?>" value="<?php echo $rs[key];?>"/>
</td>
</tr>
<?php
}//结束循环
mysql_close();
?>
</table>
</div>
<p>
<div align="center">
<input type="submit" name="save" value="保存交卷"/>
</div>
</form>
网上查了很多资料,也试着写了多次,就是搞不出来。谁能给个详尽的代码?

解决方案 »

  1.   

    分页有三个关键点:其一就是总记录数: total;其二就是每页多少条: num; 其三就是: limit的使用(如果你用的是MySQL的话)$sql = "SELECT * FROM table_name WHERE conditions LIMIT $start, $length";
      

  2.   

        $query=mysql_query("select * from question where qid='$rand_id[$i]'");//我是利用for循环从数据库中一笔一笔地抓取资料,然后再输出到页面上
        $rs=mysql_fetch_array($query,MYSQL_ASSOC);//得到一个关联索引的数组 where qid in("数组") limit $page,$pagesize 
    得一个结果集就可以了,不要反复求分页代码很多,baidu
      

  3.   

    而这个$start是根据传过来的页码变量决定的;
    比如: localhost/test.php?page=10那么这个SQL语句就变成
    $sql = "SELECT * FROM table_name WHERE conditions LIMIT 9*$length, $length";
      

  4.   

    总共也就100道题,把它们全部找出来后,用个rand打乱,然后看想分成几页就分几份,放在数组里面,然后再用Session存起来,下面写个死的4页就行了,这只是针对固定的,以后只用从SESSION取就可以了。这只是完成任务的想法,完整的想法是楼主首先到网上找个分页的类,肯定是有的,然后研究一下怎么用,会用了,你的思路自然就来了。
      

  5.   

    select qid from question where chapter='$_GET[chapter]' order by rand() limit ($page-1)*20,20;按LZ的意思,总条数已定,不用求了!
      

  6.   

    http://www.php100.com/html/shipinjiaocheng/PHP100shipinjiaocheng/2009/0416/807.html
    你下哈子,里面是讲的分页.
      

  7.   

    为了避免重复问题,在随机抽题时我使用了函数array_rand($id,100)。这些id都被放在$_SESSION['$rand_id']里,在输出页面时要根据$_SESSION['$rand_id']去数据库提取相应的问题和选项进行分页显示。。
      

  8.   

    Fatal error: Call to a member function mysql_num_rows() on a non-object in D:\wamp\www\test\page.class.php on line 37这个是什么错误啊?
      

  9.   

    我用where qid in($rand_id) limit $page,$pagesize 怎么得不到东西?$rand_id是一个包含试题id的数组了....
    错误信息: mysql_fetch_array(): supplied argument is not a valid MySQL result resource