smarty练习: 设置试题及打印试卷
数据库表格:shiti, shititimu, timu, kemu, xuanxiang
根据科目设置一个可以添加试题的页面:(如下图)
具体的题目从数据库中查出并形成一张试卷的形式
考试试题设置:
考试试题设置后台:ksset.php
<?php
include("../init.inc.php");
include("../../DBDA.class.php");
$db=new DBDA();
$sql="select * from kemu";
$attr=$db->Query($sql);
$smarty->assign("kemu",$attr);
$smarty->display("ksset.html");
考试试题设置前端:ksset.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>考试设置</title>
<script src="../../jquery-1.11.2.min.js"></script>
</head> <body>
<h1>考试试题设置</h1>
<form action="kschuli.php" method="post">
<div>请输入题目编号:<input type="text" name="code" /></div>
<div>请输入题目名称:<input type="text" name="name" /></div>
<div>请选择考试科目:
<select name="kemu" id="km">
<{foreach $kemu as $v}>
<option value="<{$v[0]}>"><{$v[1]}></option>
<{/foreach}>
</select>
</div>
<div>请输入考试时间:<input type="text" name="shijian" />分钟</div>
<div>请输入题目数量:<input type="text" name="shuliang" id="sl" /></div>
<div>请输入题目分值:<input type="text" name="fenzhi" /></div>
<input type="submit" value="提交" id="tj"/>
</form>
</body>
<script type="text/javascript">
//当发现考试科目中的试题数量小于输入的数量值时怎么办?
//点击提交时进行提醒
$(document).ready(function(e) {
$("#tj").click(function(){
//取科目的数量和输入的数量进行比较
var km=$("#km").val();
var sl=$("#sl").val();
var bs=""; $.ajax({
async:false,
url:"bijiaosl.php",
data:{km:km,sl:sl},
type:"POST",
dataType:"TEXT",
success: function(data){
bs=data;
}
}); if(bs.trim()=="OK")
{
return true;
}
else
{
alert("该科目下题目数量不足!")
return false;
} })
});
</script>
</html>
提交处理页面:kschuli.php
<?php
include("../../DBDA.class.php");
$db=new DBDA();
//往试题表添加考试题目,科目等信息
$code=$_POST["code"];
$name=$_POST["name"];
$kemu=$_POST["kemu"];
$shijian=$_POST["shijian"];
$shuliang=$_POST["shuliang"];
$fenzhi=$_POST["fenzhi"]; $sql="insert into shiti values('{$code}','{$shijian}','{$kemu}','{$name}','{$shuliang}','{$fenzhi}')";
$db->Query($sql,1); //往试题题目表添加具体的题目内容
//根据科目和数量随机生成
//查科目
$all="select code from timu where kemu='{$kemu}'";
$aall=$db->Query($all);//里面包含本科目所有题目代号 $attr=array();//存放生成的试题代号
//根据数量来取
for($i=0;$i<$shuliang;$i++)
{
//随机取代号
$n=rand(0,count($aall)-1);
$daihao=$aall[$n][0];
//判断取出的代号是否重复
if(in_array($daihao,$attr))
{
$i--;//若什么也不添加,循环出的数量会减少,所以若代号重复是,$i减少一次,再加一个
}
else
{
//$aall[$n][0];
array_push($attr,$daihao);
}
} //往shititimu(试题题目)表添加数据
//code(自增长), shiti(试题代号)=$code, timu=$v, shunxu=$k foreach($attr as $k=>$v)
{
$shunxu=$k+1;
$stm="insert into shititimu values('','{$code}','{$v}','{$shunxu}')";
$db->Query($stm,1);
}
header("location:ksset.php");
注意:若该科目的试题数量少于输入的试题数量时,要提醒试题数量不足(如图)
使用ajax来进行处理,处理页面:bijiaosl.php
<?php include("../../DBDA.class.php");
$db=new DBDA(); $km=$_POST["km"];
$sl=$_POST["sl"]; $sql="select count(*) from timu where kemu='{$km}'";
$zs = $db->StrQuery($sql); if($zs>=$sl)
{
echo "OK";
}
else
{
echo "NO";
}
形成试卷页面:
形成试卷页面后台:shijuan.php
<?php
include("../init.inc.php"); include("../../DBDA.class.php");
$db=new DBDA(); $sql="select * from shiti";
$attr=$db->Query($sql); $shuzu=array();//存储题目信息
//判断考试名称的值是否为空
if(empty($_POST["ksmc"]))
{ }
else
{
//取出试题的代号
$code=$_POST["ksmc"];
$stm="select * from shititimu where shiti='{$code}'";
$atm=$db->Query($stm); //根据代号去查找相应的题目及选项
foreach($atm as $v)
{
//题目代号
$tmdh=$v[2];
//题目顺序
$tmsx=$v[3]; //从题目表中取出试题的题目
$sname="select name from timu where code='{$tmdh}'";
$aname=$db->StrQuery($sname); //从选项表中取出相应的选项
$sxx="select name,xuanxiang from xuanxiang where timu='{$tmdh}'";
$axx=$db->Query($sxx); $timuall=array("tmsx"=>$tmsx,"tmmc"=>$aname,"tmxx"=>$axx);
$shuzu[]=$timuall; } } $smarty->assign("shiti",$attr);
$smarty->assign("timu",$shuzu);
$smarty->display("shijuan.html");
形成试卷页面前端:shijuan.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>试卷页面</title>
</head> <body>
<h1>试题详情</h1>
<form action="shijuan.php" method="post">
<div>请选择考试名称:
<select name="ksmc">
<{foreach $shiti as $v}>
<option value="<{$v[0]}>"><{$v[3]}></option>
<{/foreach}>
</select>
<input type="submit" value="查询" />
</div>
</form><br /> <div>
<{foreach $timu as $v}> <div><{$v.tmsx}>、<{$v.tmmc}>( )</div>
<{foreach $v.tmxx as $v1}>
<div><{$v1[1]}>:<{$v1[0]}></div>
<{/foreach}><br />
<{/foreach}> </div> </body>
</html>
smarty练习: 设置试题及打印试卷的更多相关文章
- 6月6 Smarty练习----设置题目及打印试卷
所需要的数据库表格:shiti, shititimu, timu, kemu, xuanxiang 考试试题的设置: 考试试题后台:ksset.php <?php include(" ...
- 面试题12:打印1到最大的n位数
// 面试题12_打印1到最大的n位数.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> ...
- 算法笔记_189:历届试题 横向打印二叉树(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 二叉树可以用于排序.其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树. 当遇到空子树 ...
- 【剑指offer】面试题 17. 打印从 1 到最大的 n 位数
面试题 17. 打印从 1 到最大的 n 位数 题目描述 题目:输入数字 n,按顺序打印出从 1 最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数即 999. 解答过 ...
- Excel2010表格里设置每页打印时都有表头
在打印Excel表格时常常会出现如果存在多页打印时,往往从第二页开始就会出现没有表头的情况,导致到后面都不清楚对应的是哪个数据,查看时也很麻烦,下面就将为大家介绍如何在Excel表格里设置每页打印时都 ...
- Logback设置SQL参数打印
一.hibernate中设置SQL参数打印: (主要是第一句) <logger name="org.hibernate.type.descriptor.sql.BasicBinder& ...
- NPOI导出EXCEL 打印设置分页及打印标题
在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置 sheet1.FitToPage = false; 而 ...
- EPSON LQ610K 设置税控盘打印发票的格式
问题困扰 之前一直是手动调试发票打印格式,浪费发票纸张不说,而且还浪费时间.今天在Parrells Desktop里利用Bonjour设置打印机的时候,找到了EPSON网站有这方面的介绍,根据上面的提 ...
- [转]NPOI导出EXCEL 打印设置分页及打印标题
本文转自:http://www.cnblogs.com/Gyoung/p/4483475.html 在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方 ...
随机推荐
- SSD、高级格式化硬盘,4K,分区,对齐,Ghost能不能用的解释用SSD的都可以看看
或者以上,建议选择2048,这是Win7分区使用的值,实际对齐大小就为1024K. 4.如何知道是否对齐? 使用工具AS SSD Benchmark(HDTune Pro 4.6目前测的禁绝) ...
- android中如何处理cookie
Managing Cookies HttpClient provides cookie management features that can be particularly useful to t ...
- Another Look at Events(再谈Events)
转载:http://www.qtcn.org/bbs/simple/?t31383.html Another Look at Events(再谈Events) 最近在学习Qt事件处理的时候发现一篇很不 ...
- html编码转换
http://webdesign.about.com/od/localization/l/blhtmlcodes-math.htm http://www.cnblogs.com/terryglp/ar ...
- 【转】ActionBar的基本用法
原文网址:http://irtutsk.iteye.com/blog/2117707 ActionBar的组成: [1]AppIcon:标题区,显示应用程序图标和标题,也可以自定义. [2]ViewC ...
- 新博客——That
很久没写博客了,打算换个地方重新开始. 旧博客地址如下: http://blog.csdn.net/that163
- 行内人解读开发一个App需要多少钱?
对于很多互联网的创业者来说,评估前期的创业成本是很重要的.在这几年的创业大潮中,伴随着“互联网+”和“互联网思维”的普及,很多创业项目选择了开发app作为创业项目的载体.在我接触到的很多创业者,找Ap ...
- I/O多路转接 --- UNIX环境高级编程
I/O多路转接技术:先构造一张有关描述符的列表,然后调用一个函数,知道这些描述符中的一个已准备好进行I/O时,给函数才返回.在返回时,它告诉进程哪些描述符已准备好可以进行I/O. poll.selec ...
- 二十六个月Android学习工作总结
1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍. 2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该功能的运行过程写出来. 3.要有自己的知识库,可以是 ...
- LOADRUNNER8.1卸载
卸载LOADRUNNER8.1后,不能正常又一次安装的问题. Loadrunner 8.1 安装1.下载Loadrunner8.1 (官方英文版) 2.安装Loadrunner8.1 3.破解:htt ...