6月6 Smarty练习----设置题目及打印试卷

Posted Durriya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6月6 Smarty练习----设置题目及打印试卷相关的知识,希望对你有一定的参考价值。

所需要的数据库表格:shiti, shititimu, timu, kemu, xuanxiang 

考试试题的设置:

考试试题后台:ksset.php

<?php
include("../init.inc.php");

include("../DBDA.php");
$db = new DBDA(); 

$skm = "select * from kemu";
$akm = $db->Query($skm);



$smarty->assign("kemu",$akm);
$smarty->display("ksset06.html");
View Code

 

考试试题处理页面:kssetchuli.php

<?php

include("../DBDA.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);

$sall = "select code from timu where kemu =\'{$kemu}\'";
$aall = $db->Query($sall);

var_dump($aall);

$shuzu = array();//生成的试题代号

for($i=0;$i<$shuliang;$i++)
{
    $n = rand(0,count($aall)-1);//0-数组长度的随机数(索引从0开始的)
    $daihao = $aall[$n][0];
    
    if(in_array($daihao,$shuzu))
    {
        $i--;    
    }
    else
    {
        array_push($shuzu,$daihao);
    }
}
foreach($shuzu as $k=>$v)
{
    $shunxu = $k+1;
    $sttm = "insert into shititimu values(\'\',\'{$code}\',\'{$v}\',\'{$shunxu}\')";    
    $db->Query($sttm,1);
}
header("location:ksset.php");
View Code

 

考试试题前端显示:ksset06.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>
<!--<a href="#" onclick="return confirm(\'确定要删除吗\')">删除</a>-->
<h1>设置考试信息</h1>
<form action="kssetchuli.php" method="post">
    <div>请输入考试编号:<input type="text" name="code" /></div></br>
    
    <div>请输入考试名称:<input type="text" name="name" /></div></br>
    
    <div>请选择考试科目:
            <select name="kemu" id="kemu">
                <{foreach $kemu as $v}>
                    <option value="<{$v[0]}>"><{$v[1]}></option>
                <{/foreach}>
            </select>
    </div></br>
    
    <div>请输入考试时间:<input type="text" name="shijian" />分钟</div></br>
    
    <div>请输入题目数量:<input type="text" name="shuliang" id="sl" /></div></br>
    
    <div>请输入题目分值:<input type="text" name="fenzhi" /></div></br>

<input type="submit" value="提交" id="tj" onclick="Check()" />
</form>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(e) {
   $("#tj").click(function(){
      var km = $("#kemu").val();
      var sl = $("#sl").val();
      var bs = "";
      
      $.ajax({
          url:"panduansl.php",
          async:false,
          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>
View Code

 

前端的显示数据包含需要判断的输入该科目下的试题数量的比较:panduansl.php(使用ajax)

<?php

include("../DBDA.php");
$db = new DBDA(); 

$km = $_POST["km"];
$sl = $_POST["sl"];

$sall = "select count(*) from timu where kemu =\'{$km}\'";
$aall = $db->StrQuery($sall);

if($aall>=$sl)//表中的与写进去的比较
{
    echo "OK";    
}
else
{
    echo "NO";    
}
View Code

 

形成试卷的相关页面:

形成的试卷后台页面:kstimu.php

<?php
include("../init.inc.php");

include("../DBDA.php");
$db = new DBDA();

$sst = "select * from shiti";
$ast = $db->Query($sst);

$shzu = array();//题目信息

if(empty($_POST["ksmc"]))
{
    
}
else
{
    $code = $_POST["ksmc"];//根据他去查shititimu
    $stm = "select * from shititimu where shiti=\'{$code}\'";
    $atm = $db->Query($stm);
    //var_dump($atm);
    foreach($atm as $v)
    {
        $tmdh = $v[2];//代号
        $tmsx = $v[3];//顺序    
        
        $sname = "select name from timu where code=\'{$tmdh}\'";
        $tmmc = $db->StrQuery($sname);
        //echo $tmmc;
        
        $sxx = "select name,xuanxiang from xuanxiang where timu =\'{$tmdh}\'";
        $axx = $db->Query($sxx);//选项
        //var_dump($axx);
        
        $tmxx = array("tmsx"=>$tmsx,"tmmc"=>$tmmc,"xuanxiang"=>$axx);
        $shzu[] = $tmxx;//往数组添加数据
        //var_dump($shzu);
    }
    
    
}

$smarty->assign("tm",$shzu);
$smarty->assign("st",$ast);
$smarty->display("kstimu06.html");
View Code

 

形成的试卷前端显示:kstimu06.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>
<form action="kstimu.php" method="post">
<h1>试题详情</h1>
<div>请选择考试名称:
    <select name="ksmc">
    <{foreach $st as $v}>
        <option value="<{$v[0]}>"><{$v[3]}></option>
    <{/foreach}>
    </select>

<input type="submit" value="查询" />
</div>
</form>
<br />
<div>
    <{foreach $tm as $v}>
            <div style="font-size:18px; font-weight:bold; color:#906"><{$v.tmsx}>&nbsp;<{$v.tmmc}></div>

             <{foreach $v.xuanxiang as $v1}>
                 <div><{$v1[1]}>:<{$v1[0]}></div>
             <{/foreach}><br />
            
    <{/foreach}>


</div>
</body>
</html>
View Code

 

以上是关于6月6 Smarty练习----设置题目及打印试卷的主要内容,如果未能解决你的问题,请参考以下文章

6月3日 smarty基础

6月3 Smarty基础读取配置

6月5日 smarty变量调节器 函数 配置文件

6月5 Smarty自定义函数

6月21号 Java流程控制 练习

实验报告(2019年6月26日)