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)方 ...
随机推荐
- 解决VS2013中“This function or variable may be unsafe”的问题
1.在VS2013中编译代码时出现如上错误信息,下面就介绍下如何解决This function or variable may be unsafe的问题. 2.用VS2013打开出现错误的代码文件 3 ...
- 复杂事件处理引擎—Esper 处理模型
1.esper的处理模型是持续性的——根据statement中事件流(event stream).视图(views).过滤器(filters)等的选择,esper引擎一旦处理事件数据,就会变更stat ...
- 王学长的AAA树
让我们响应王学长的号召勇敢的分开写splay和lct吧! 分开写大法好!!!!!!!!!!!杜教的ch[4]弱爆了!!!! #include <stdio.h> #include < ...
- 【转】中断处理函数中不用disable_irq而用disable_irq_nosync原因
原文网址:http://blog.csdn.net/skyflying2012/article/details/8265869 今天在写触摸屏驱动时在中断处理函数中使用disable_irq关中断发现 ...
- 2014-08-04 BBS主页页面的设计
今天是在吾索实习的第19天.这天,开始参照一开始设计的界面原型,真真正正地进行BBS界面的设计.在运用.NET进行界面设计时,发现没有用RP进行界面设计来得容易,很多都要再进行更精细的操作,才能达到原 ...
- android SimpleCursorAdapter的使用
String[] fields=new String[]{"foodname","price","taste","stuff&qu ...
- 读<<如何阅读一本书>>乱七八糟的笔记1
阅读层次 第一层:基础阅读 第二层:检视阅读 系统化略读 第三层:分析阅读 第四层:主题阅读(比较阅读) 第二层:检视阅读 1.有系统的粗读或略读 (1)先看书名页,然后如果有序就先看序 (2)研究目 ...
- BZOJ 3514 (动态树)
这两天终于基本理解了Link-Cut Tree这种神一般的东西.然后就来做这道题了. 原题是CodeChef上的.CodeChef上没有强制在线,且时限更宽松,所以似乎用莫队一样的算法把询问分组就能水 ...
- MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。
1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...
- Javascript:阻止浏览器默认右键事件,并显示定制内容
在逛一些知名图片社区的时候,遇到自己心怡的图片,想要右键另存的时候,默认的浏览器菜单不见了,却出现了如:[©kevin版权所有]之类的信息: 今天在看Javascript事件默认行为相关的知识,所以, ...