我的LabPHP框架的Demo应用——课程设计题目统计系统

2023-05-16

1、界面制作(为了方便起见,这里我采用了Bootstrap框架制作界面)

2数据库设计,正确创建students表;


admin表:


3、项目目录结构如下:


    LaPHP框架已经在上文中列出,这里就不再列出。

   Home模块(提供“新增题目”和“修改试题”、查看所有学生题目的功能):




       Application/Home/Config/config.php

<?php 
	return array(
		//'配置项'=>'配置值'
		'DB_HOST' => 'localhost', //设置主机
		'DB_USER' => 'root', //设置用户名
		'DB_PWD' => '', //设置密码
		'DB_PORT' => '3306', //设置端口号
		'DB_NAME' => 'mydb_329', //设置数据库名

		/* 模板设置 */
	    'TMPL_TEMPLATE_SUFFIX'  =>  '.php',     // 默认模板文件后缀
	);
?>
     Application/Home/Controller/IndexController.class.php

<?php 
	class IndexController extends Controller {		
		function index() {
			//echo "<p style='width: 50%; height: 300px; line-height: 300px; padding: 10px 20px; font-family:\"微软雅黑\", \"Microsoft YaHei\"; font-size: 30px; margin: 50px auto; box-shadow: 0 0 3px #ABCDEF; text-align: center; position: relative;'>Hello LabPHP!<span style='line-height: 30px; font-size: 20px; position: absolute; bottom: 20px; right: 20px;'>欢迎使用LapPHP V1.0.0   By DreamBoy<span></p>";
			
			$students = M('Students'); //检查是否有错误提示
			if($res = $students->check()) {
				$this->assign('err', $res);
			}
			$this->display();
		}

		function doAction() {
			$students = M('Students');
			if($res = $students->checkForm()) { //验证表单字段
				$this->assign('err', $res)->display('Index/index');
			} else {
				if($this->validate($_POST['action'])) { //根据action执行相应操作
					if($_POST['action'] == 'add') {

						if($students->add()) {
							$this->assign('info', 'add')->show();
						} else {
							$this->redirect('Index/index', 'err=add');
						}

					} else if($_POST['action'] == 'modify') {
						if($students->modify()) {
							$this->assign('info', 'modify')->show();
						} else {
							$this->redirect('Index/index', 'err=modify');
						}
					}
				}
			}
		}

		//显示所有信息
		function show() {
			$students = M('Students');
			$cur = 1; //当前页数第一页
			if($this->validate($_GET['cur'])) {
				$cur = $_GET['cur'];
			}
			$res = $students->page($cur);
			$this->assign('res', $res)->assign('start', ($cur-1) * $students->getEachPageLen() + 1)->assign('prePage', $cur-1)->assign('nextPage', $cur+1)->display('Index/showStudent');
		}
	}
?>

     Application/Home/Model/StudentsModel.class.php

<?php 
	class StudentsModel extends Model {
		private static $err = array('sno'=>'学生学号不能为空!', 'name'=>'学生姓名不能为空!', 'psw'=>'修改密码不能为空', 'title'=>'题目标题不能为空!', 'add'=>'新增题目失败,原因可能为已新增过题目了,请尝试选择“修改试题”进行提交!', 'modify'=>'修改试题失败,原因可能为:1.未新增过题目;2.学生学号输入错误;3.修改密码输入错误!');
		private $eachPageLen = 15;

		/**
		 * 检查是否有错误提示
		 * @return [type] [description]
		 */
		function check() {
			if($this->validate($_GET['err'])) {
				return self::$err[$_GET['err']];
			}
			return '';
		}

		/**
		 * 检查新增题目或修改试题的提交过来的表单字段
		 * @return [type] [description]
		 */
		function checkForm() {
			$required = array('sno'=>'学生学号不能为空!', 'name'=>'学生姓名不能为空!', 'psw'=>'修改密码不能为空', 'title'=>'题目标题不能为空!');

			foreach ($required as $key => $value) {
				if(!$this->validate($_POST[$key])) {
					return $value;
				}
			}
			return '';
		}

		//新增数据
		function add() {
			$sno = $_POST['sno'];
			$name = $_POST['name'];
			$psw = $_POST['psw'];
			$title = $_POST['title'];
			$partner = $_POST['partner'];

			$sql = "INSERT INTO students(`sno`, `name`, `psw`, `title`, `last_time`, `partner`) VALUES('$sno', '$name', '$psw', '$title', now(), '$partner')";

			$res = $this->execute_dml($sql);
			if($res == 1) {
				return 1; //新增题目成功
			} else {
				return 0; //新增题目失败
			}
		}

		//修改数据
		function modify() {
			$sno = $_POST['sno'];
			$psw = $_POST['psw'];
			$title = $_POST['title'];
			$partner = !isset($_POST['partner']) || empty($_POST['partner']) ? '' : $_POST['partner'];

			$sql = "UPDATE students SET `title` = '$title', `partner` = '$partner' WHERE `sno` = '$sno' AND `psw` = '$psw'";

			$res = $this->execute_dml($sql);
			if($res == 1) {
				return 1; //修改题目成功
			} else {
				return 0; //修改题目失败
			}
		}

		//分页查询数据
		function page($cur) {
			$length = $this->eachPageLen;
			$offset = ($cur - 1) * $length;
			$sql = "SELECT * FROM students ORDER BY sno LIMIT $offset,$length";
			return $arr = $this->execute_dql_arr($sql);
		}
		//得到每页的页数
		function getEachPageLen() {
			return $this->eachPageLen;
		}
	}
?>

    Application/Home/View/Index/index.php

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>课程设计题目统计系统</title>

    <!-- Bootstrap -->
    <link href="Public/css/bootstrap.min.css" rel="stylesheet">
    <link href="Public/style.css" rel="stylesheet" type="text/css"/>

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <div class="container">
      <div class="col-sm-3"></div>
      <div class="col-sm-6 content">
        <h2>课程设计题目统计系统</h2>
        <form class="form-horizontal" action="index.php?a=doAction" method="POST">
          <div class="form-group">
            <label for="number" class="col-sm-3 control-label">学生学号:</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" id="number" placeholder="输入12位学号" name="sno">
            </div>
          </div>
          <div class="form-group">
            <label for="name" class="col-sm-3 control-label">学生姓名:</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" id="name" placeholder="姓名" name="name">
            </div>
          </div>
          <div class="form-group">
            <label for="password" class="col-sm-3 control-label">修改密码:</label>
            <div class="col-sm-9">
              <input type="password" class="form-control" id="password" placeholder="首次输入作为后面修改的密码" name="psw">
            </div>
          </div>
          <div class="form-group">
            <label for="title" class="col-sm-3 control-label">你的题目:</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" id="title" placeholder="按照课程设计题目要求" name="title">
            </div>
          </div>
          <div class="form-group">
            <label for="name" class="col-sm-3 control-label">合作学生:</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" id="name" placeholder="姓名,没有就空,只负责不同方面" name="partner">
            </div>
          </div>
          <div class="form-group">
            <div class="col-sm-offset-3 col-sm-9">
                <label>
                  <input type="radio" name="action" value="add"  checked="checked"> 新增题目
                </label>
                  
                <label>
                  <input type="radio" name="action" value="modify"> 修改试题
                </label>
            </div>
          </div>
          <div class="form-group">
            <div class="col-sm-offset-3 col-sm-9">
              <button type="submit" class="btn btn-info">提交操作</button>   
              <a href="index.php?a=show">显示全部学生题目</a>
            </div>
          </div>
          <?php
            if($err) {
          ?>
               <p class="info"><span style="font-weight: bold">错误:</span><?php echo $err;?></p>
          <?php
            }
          ?>
        </form>
      </div>
      <div class="col-sm-3"></div>
    </div>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="Public/js/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="Public/js/bootstrap.min.js"></script>
  </body>
</html>

   Application/Home/View/Index/showStudent.php

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>课程设计题目统计系统</title>

    <!-- Bootstrap -->
    <link href="Public/css/bootstrap.min.css" rel="stylesheet">
    <link href="Public/style.css" rel="stylesheet" type="text/css"/>
    <style>
      p.info {
        margin-bottom: 0;
      }
    </style>

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
	<div class="container">
      <div class="content">
        <?php
          if($info) {
            if($info == 'add') {
              $fo = '新增';
            } else if($info == 'modify') {
              $fo = '修改';
            }
        ?>
             <p class="info"><marquee behavior="scroll" direction="left"><span style="font-weight: bold">消息:</span><?php echo $fo . '题目成功!';?></marquee></p>
        <?php
          }
        ?>
        
        <table class="table table-hover">
          <caption><h3>学生课程设计题目</h3></caption>
          <?php
            if(!isset($res) || empty($res)) {
              echo '<tr><td>暂无学生题目</td></tr>';
            } else {
          ?>
          <thead>
            <tr>
              <!-- <th>删除</th> -->
              <th>序号</th>
              <th>学号</th>
              <th>姓名</th>
              <th>题目</th>
              <th>状态</th>
              <th>录入时间</th>
              <th>合作学生</th>
            </tr>
          </thead>
          <tbody>
            <?php
              $i = $start ? $start : 1;
              foreach ($res as $value) {
                echo '<tr>';
                echo "<th scope='row'>$i</th>";
                echo "<td>{$value['sno']}</td>"; 
                echo "<td>{$value['name']}</td>"; 
                echo "<td>{$value['title']}</td>"; 
                echo "<td>{$value['state']}</td>"; 
                echo "<td>{$value['last_time']}</td>"; 
                echo "<td>{$value['partner']}</td>"; 
                echo '</tr>';
                $i++;
              }
            ?>
          </tbody>
          <?php
            }
          ?>
        </table>
        <nav>
          <ul class="pager">
            <li>
              <?php
                if($prePage) {
                  if($prePage >= 1) {
                    echo "<a href='index.php?a=show&cur=$prePage'>上一页</a>";
                  }
                }
              ?>
            </li>
            <li>
              <?php
                if($nextPage) {
                  if($nextPage >= 1) {
                    echo "<a href='index.php?a=show&cur=$nextPage'>下一页</a>";
                  }
                }
              ?>
            </li>
          </ul>
        </nav>
        <a href="index.php">返回输入界面</a>
      </div>
    </div>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="Public/js/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="Public/js/bootstrap.min.js"></script>
  </body>
</html>

     Admin模块(提供管理员登陆和删除功能):






         Application/Admin/Config/config.php

<?php 
	return array(
		//'配置项'=>'配置值'
		'DB_HOST' => 'localhost', //设置主机
		'DB_USER' => 'root', //设置用户名
		'DB_PWD' => '', //设置密码
		'DB_PORT' => '3306', //设置端口号
		'DB_NAME' => 'mydb_329', //设置数据库名

		/* 模板设置 */
	    'TMPL_TEMPLATE_SUFFIX'  =>  '.php',     // 默认模板文件后缀
	);
?>
     Application/Admin/Controller/IndexController.class.php

<?php 
	class IndexController extends Controller {		
		function index() {
			//echo "<p style='width: 50%; height: 300px; line-height: 300px; padding: 10px 20px; font-family:\"微软雅黑\", \"Microsoft YaHei\"; font-size: 30px; margin: 50px auto; box-shadow: 0 0 3px #ABCDEF; text-align: center; position: relative;'>Hello LabPHP!<span style='line-height: 30px; font-size: 20px; position: absolute; bottom: 20px; right: 20px;'>欢迎使用LapPHP V1.0.0   By DreamBoy<span></p>";
			
			$this->display();
		}

		function check() {
			$admin = M('Admin'); //检查是否有错误提示
			if($res = $admin->check()) { //验证失败!有错误提示
				$this->assign('err', $res);
				$this->display('Index/index');
			} else {
				$this->redirect('Index/adminShow');
			}
		}

		/**
		 * 验证是否登陆过
		 * @return boolean [description]
		 */
		function isLogin() {
			session_start();
			if(!$this->validate($_SESSION['account'])) {
				$this->assign('err', '请先登录!')->display('Index/index');
			}
		}

		//显示所有信息
		function show() {
			$this->isLogin();

			$students = M('Students');
			$cur = 1; //当前页数第一页
			if($this->validate($_GET['cur'])) {
				$cur = $_GET['cur'];
			}
			$res = $students->page($cur);
			$this->assign('res', $res)->assign('start', ($cur-1) * $students->getEachPageLen() + 1)->assign('prePage', $cur-1)->assign('nextPage', $cur+1)->display('Index/showStudent');
		}

		//显示所有信息+删除操作
		function adminShow() {
			$this->isLogin();

			$students = M('Students');
			$cur = 1; //当前页数第一页
			if($this->validate($_GET['cur'])) {
				$cur = $_GET['cur'];
			}
			$res = $students->page($cur);
			$this->assign('res', $res)->assign('start', ($cur-1) * $students->getEachPageLen() + 1)->assign('prePage', $cur-1)->assign('nextPage', $cur+1)->display('Index/admin');
		}

		//删除学生题目
		function del() {
			//print_r($_POST['sno']);
			$admin = M('Admin');
			$res = $admin->del();
			if($res == 1) {
				$this->assign('info', '删除成功!');
			} else if($res == -1) {
				$this->assign('info', '删除失败!');
			} else if($res == 0) {
				$this->assign('info', '没有删除任何数据');
			}
			$this->adminShow();
		}
	}
?>
      Application/Admin/Model/AdminModel.class.php

<?php 
	class AdminModel extends Model {
		private static $err = array('account'=>'管理员账号不能为空!', 'psw'=>'管理员密码不能为空!', 'none'=>'该账号不存在!', 'pswErr'=>'密码错误!');

		function check() {
			//验证管理员账号是否为空
			if(!$this->validate(daddslashes($_POST['account']))) {
				return self::$err['account'];
			}

			//验证管理员密码是否为空
			if(!$this->validate(daddslashes($_POST['psw']))) {
				return self::$err['psw'];
			}

			$account = daddslashes($_POST['account']);
			$psw = daddslashes($_POST['psw']);
			$sql = "SELECT `psw` FROM `admin` WHERE `account`='$account'";
			$res = $this->execute_dql_arr($sql);
			if($this->validate($res)) {
				if($res[0]['psw'] != $psw) {
					return self::$err['pswErr'];
				}
			} else {
				return self::$err['none'];
			}

			//验证通过
			session_start();
			$_SESSION['account'] = $account;
			return '';
		}

		//删除学生题目
		function del() {
			if($this->validate($_POST['sno'])) {
				$snoArr = $_POST['sno']; //获取用户选择的sno数组
				$snos = implode(',', $snoArr);
				$sql = "DELETE FROM `students` WHERE `sno` IN ($snos)";
				$res = $this->execute_dml($sql);
				if($res == 1) {
					return 1; //新增题目成功
				} else {
					return 0; //新增题目失败
				}
			} else {
				return -1; //没有题目可删除
			}
		}
	}
?>
       Application/Admin/Model/StudentsModel.class.php

<?php 
	class StudentsModel extends Model {
		private $eachPageLen = 15;

		//分页查询数据
		function page($cur) {
			$length = $this->eachPageLen;
			$offset = ($cur - 1) * $length;
			$sql = "SELECT * FROM students ORDER BY sno LIMIT $offset,$length";
			return $arr = $this->execute_dql_arr($sql);
		}
		//得到每页的页数
		function getEachPageLen() {
			return $this->eachPageLen;
		}
	}
?>

       Application/Admin/View/Index/admin.php

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>课程设计题目统计后台管理系统</title>

    <!-- Bootstrap -->
    <link href="Public/css/bootstrap.min.css" rel="stylesheet">
    <link href="Public/style.css" rel="stylesheet" type="text/css"/>
    <style>
      p.info {
        margin-bottom: 0;
      }
    </style>

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
	<div class="container">
      <div class="content">   
        <?php
          if($info) {
        ?>
             <p class="info"><marquee behavior="scroll" direction="left"><span style="font-weight: bold">消息:</span><?php echo $info;?></marquee></p>
        <?php
          }
        ?>
        <form action="index.php?m=Admin&a=del" method="POST">
          <table class="table table-hover">
            <caption><h3>学生课程设计题目</h3></caption>
            <?php
              if(!isset($res) || empty($res)) {
                echo '<tr><td>暂无学生题目</td></tr>';
              } else {
            ?>
            <thead>
              <tr>
                <th>删除</th>
                <th>序号</th>
                <th>学号</th>
                <th>姓名</th>
                <th>题目</th>
                <th>状态</th>
                <th>录入时间</th>
                <th>合作学生</th>
              </tr>
            </thead>
            <tbody>
              <?php
                $i = $start ? $start : 1;
                foreach ($res as $value) {
                  echo '<tr>';
                  echo '<td><input type="checkbox" name="sno[]" value="' . $value['sno'] . '"/></td>';
                  echo "<th scope='row'>$i</th>";
                  echo "<td>{$value['sno']}</td>"; 
                  echo "<td>{$value['name']}</td>"; 
                  echo "<td>{$value['title']}</td>"; 
                  echo "<td>{$value['state']}</td>"; 
                  echo "<td>{$value['last_time']}</td>"; 
                  echo "<td>{$value['partner']}</td>"; 
                  echo '</tr>';
                  $i++;
                }
              ?>
            </tbody>
            <?php
              }
            ?>
          </table>
          <nav>
            <ul class="pager">
              <li>
                <?php
                  if($prePage) {
                    if($prePage >= 1) {
                      echo "<a href='index.php?m=Admin&a=adminShow&cur=$prePage'>上一页</a>";
                    }
                  }
                ?>
              </li>
              <li>
                <?php
                  if($nextPage) {
                    if($nextPage >= 1) {
                      echo "<a href='index.php?m=Admin&a=adminShow&cur=$nextPage'>下一页</a>";
                    }
                  }
                ?>
              </li>
            </ul>
          </nav>
          <a href="index.php?m=Admin">返回登陆界面</a>     <input class="btn btn-default" type="submit" value="确认删除"/>
        </form>
      </div>
    </div>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="Public/js/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="Public/js/bootstrap.min.js"></script>
  </body>
</html>

       Application/Admin/View/Index/index.php

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>课程设计题目统计后台管理系统</title>

    <!-- Bootstrap -->
    <link href="Public/css/bootstrap.min.css" rel="stylesheet">
    <link href="Public/style.css" rel="stylesheet" type="text/css"/>

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <div class="container">
      <div class="col-sm-3"></div>
      <div class="col-sm-6 content">
        <h2>课程设计题目统计后台管理系统</h2>
        <form class="form-horizontal" action="index.php?m=Admin&a=check" method="POST">
          <div class="form-group">
            <label for="number" class="col-sm-3 control-label">管理员账号:</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" id="number" placeholder="请输入管理员账号" name="account">
            </div>
          </div>
          <div class="form-group">
            <label for="password" class="col-sm-3 control-label">修改密码:</label>
            <div class="col-sm-9">
              <input type="password" class="form-control" id="password" placeholder="请输入管理员密码" name="psw">
            </div>
          </div>
          <div class="form-group">
            <div class="col-sm-offset-3 col-sm-9">
              <button type="submit" class="btn btn-info">登陆</button>   
              <a href="index.php?m=Admin&a=show">显示全部学生题目</a>
            </div>
          </div>
          <?php
            if($err) {
          ?>
               <p class="info"><span style="font-weight: bold">错误:</span><?php echo $err;?></p>
          <?php
            }
          ?>
        </form>
      </div>
      <div class="col-sm-3"></div>
    </div>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="Public/js/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="Public/js/bootstrap.min.js"></script>
  </body>
</html>
        Application/Admin/View/Index/showStudent.php

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>课程设计题目统计系统</title>

    <!-- Bootstrap -->
    <link href="Public/css/bootstrap.min.css" rel="stylesheet">
    <link href="Public/style.css" rel="stylesheet" type="text/css"/>
    <style>
      p.info {
        margin-bottom: 0;
      }
    </style>

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
	<div class="container">
      <div class="content">
        <table class="table table-hover">
          <caption><h3>学生课程设计题目</h3></caption>
          <?php
            if(!isset($res) || empty($res)) {
              echo '<tr><td>暂无学生题目</td></tr>';
            } else {
          ?>
          <thead>
            <tr>
              <!-- <th>删除</th> -->
              <th>序号</th>
              <th>学号</th>
              <th>姓名</th>
              <th>题目</th>
              <th>状态</th>
              <th>录入时间</th>
              <th>合作学生</th>
            </tr>
          </thead>
          <tbody>
            <?php
              $i = $start ? $start : 1;
              foreach ($res as $value) {
                echo '<tr>';
                echo "<th scope='row'>$i</th>";
                echo "<td>{$value['sno']}</td>"; 
                echo "<td>{$value['name']}</td>"; 
                echo "<td>{$value['title']}</td>"; 
                echo "<td>{$value['state']}</td>"; 
                echo "<td>{$value['last_time']}</td>"; 
                echo "<td>{$value['partner']}</td>"; 
                echo '</tr>';
                $i++;
              }
            ?>
          </tbody>
          <?php
            }
          ?>
        </table>
        <nav>
          <ul class="pager">
            <li>
              <?php
                if($prePage) {
                  if($prePage >= 1) {
                    echo "<a href='index.php?m=Admin&a=show&cur=$prePage'>上一页</a>";
                  }
                }
              ?>
            </li>
            <li>
              <?php
                if($nextPage) {
                  if($nextPage >= 1) {
                    echo "<a href='index.php?m=Admin&a=show&cur=$nextPage'>下一页</a>";
                  }
                }
              ?>
            </li>
          </ul>
        </nav>
        <a href="index.php?m=Admin">返回登陆界面</a>
      </div>
    </div>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="Public/js/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="Public/js/bootstrap.min.js"></script>
  </body>
</html>


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的LabPHP框架的Demo应用——课程设计题目统计系统 的相关文章

  • 【MediaSoup】mediasoup-sfu-cpp : demo 和MediaSoup实例

    MediaSoup mediasoup sfu cpp vs2022 构建 完成了构建 下面分析其线程模型 main 进程 创建一个独立server线程支持ws 作为一个oatpp的组件存在 D span class token punct
  • Autoware1.14运行官网Demo 适配镭神激光雷达

    项目场景 xff1a Autoware1 14 运行官网demo 适配镭神16线激光雷达 运行官网Demo 1 创建 autoware文件夹 xff0c 下载官网数据包 xff0c 并解压 span class token function
  • 芯烨打印机api密钥php,php连接芯烨云打印机 (php demo)

    芯烨云官方接口开发文档 https www xpyun net open index html header 34 Content type text html charset 61 utf 8 34 必须 官方要求 header 34 A
  • NVIDIA Jetson TX2 查看系统相关+运行demo

    1 查看Jetson TX2 L4T版本 xff1a head n 1 etc nv tegra release 2 查看系统版本 xff1a cat etc lsb release 3 查看系统内核 xff1a uname a 4 查看内
  • C# 读写ini配置文件demo

    INI就是扩展名为 34 INI 34 的文件 其实他本身是个文本文件 可以用记事本打工 主要存放的是用户所做的选择或系统的各种参数 INI文件其实并不是普通的文本文件 它有自己的结构 由若干段落 SECTION 组成 在每个带括号的标题下
  • 游戏大厅类软件 Demo系列(二)

    游戏大厅类软件 DSkinLite界面库Demo系列 xff08 二 xff09 游戏大厅类软件是UIEASY开发团队制作的又一个软件demo xff0c 此次发布只是一个雏形 xff0c 我们还将继续完善此Demo xff0c 使其各项功
  • 基于springboot的简单restful服务demo

    这篇文章主要是本人学习springboot时一个简单的测试demo xff0c 仅供参考 springboot的介绍 xff1a 由Pivotal团队提供的全新框架 xff0c 设计的目的是简化spring新应用搭建的过程 xff0c 使用
  • 枚举的简单demo

    枚举 间接的表示一些固定的值 xff0c 关键字 enum Demo span class token keyword public span span class token keyword enum span GenderEnum sp
  • springboot整合shiro的小demo(一)

    刚学shiro整合springboot xff0c 在此做一个笔记 xff0c 以便后期忘了查阅 本文分以下几个方面进行整合以及验证 xff1a 1 springboot项目搭建整合thymeleaf实现页面访问 2 springboot整
  • 基于pyqt5的Demo软件开发

    一 功能 从软件界面上打开一个txt文件 xff0c 后台提取内容 xff0c 显示在界面上 通过这个Demo软件 xff0c 可以练习软件开发的基本流程 不进行异常的设计 xff0c 仅设计按照正常流程走的程序 二 环境 OS xff1a
  • Linux下的Tcp通信项目范例【demo】

    一 适合阅读对象 2 4个月的初学者 C语言编程方向 xff09 二 项目内容 xff1a 设计一个可以符合多用户进行线上查阅乐器的商城 xff0c 要求可以多个用户查看 xff0c 管理员可随时修改内容 xff0c 普通用户仅可查看 xf
  • Temperature demo 测试部署 by kubeedge

    Temperature demo 测试 本实例主要是部署了 基于树莓派的temperatrue 温度测量 xff08 由于树莓派不具备温度测量模块 xff0c 故采用了自然累加的方式来产生温度变化 xff09 一 准备工作 1 xff09
  • ArcFaceSDK3.0 Python Demo

    做服务外包项目需要是用虹软的人脸对比SDK xff0c 项目使用Python进行开发 xff0c 但是网上以及官方社区没有基于Python的3 0版本项目 xff0c 所以自己根据社区里大佬1 1和2 0的Demo修改套了一下 face c
  • sld样式文件demo

    标注样式为 xff1a 代码为 xff1a lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt StyledLayerDescriptor xmlns 61 34 http w
  • 这是mybatis最简单的入门

    这里有一个demo 这是mybatis最简单的入门 使用的IDE为idea 是maven的哦 这篇只是很简单的一个查询demo 目标是ssm 先来pom文件 这个不知道在网上哪里找的 lt gt
  • 原生PHP利用QQ邮箱发送邮件

    PHP发送邮件必不可少的是PHPMailer类库 PHPMailer PHPMailer 是一个封装好的 PHP 邮件发送类 支持发送 HTML 内容的电子邮件 以及可以添加附件发送 并不像 PHP 本身 mail 函数需要服务器环境支持
  • QT基础:遍历QFormLayout列表布局器中的控件,并链接槽函数进行操作

    QFormLayout 是一个列表布局器 每一行的序号是从0开始的 类似于数组的下标 每一行有两个元素 左边的元素叫标签 Label 右边的元素叫字段 Field 这里是一个QFormLayout简单的布局演示 QFormLayout 列表
  • Unity-赛车Demo

    using UnityEngine using System Collections public class CarDrive MonoBehaviour public WheelCollider wheelColLF public Wh
  • 今天这个是mybatis与spring的整合

    今天这个是mybatis与spring的整合 依旧是一个查询的demo 首先是demo的结构 然后是我的jdbc properties jdbc driverClassName com mysql jdbc Driver jdbc url
  • 将文本输入解释为 PHP

    我想让用户测试我的 PHP 类 其中包括裁剪图像和调整图像大小 我希望他们在文本字段中编写 PHP 代码 发送表单 然后运行他们的代码 我怎样才能做到这一点 或者是否还有其他安全的方法可以让用户 任何人 演示 PHP 类 我将使用几乎没有权

随机推荐

  • CSS3 卡片翻转(transform)

    这里只考虑chrome的兼容 card1 html lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt
  • 他们的CSS3 3D正方体

    摘自 xff1a 程旭元 所分享的程序 效果图如下 xff1a cube html lt DOCTYPE html gt lt html lang 61 34 zh CN 34 gt lt head gt lt title gt 3D正方体
  • html自定义复选框

    自定义复选框的素材 xff1a icon check circle png icon checked png checkbox html xff08 为了方便起见 xff0c 这里使用到了jQuery xff09 lt DOCTYPE ht
  • CSS3的基本介绍

    知识点记录 xff1a 1 圆角效果 border radius 如 xff1a border radius 10px 所有角都使用半径为10px 的圆角 border radius 5px 4px 3px 2px 四个半径值分别是左上角
  • CSS3选择器(上)

    1 属性选择器 E att 61 val 选择匹配元素 E xff0c 且 E元素定义了属性 att xff0c 其属性值以 val开头的任何字符串 E att 61 val 选择匹配元素 E xff0c 且 E元素定义了属性 att xf
  • CSS3实现曲线阴影和翘边阴影

    效果图如下 xff1a index html lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt ti
  • THINKPHP 数据操作方法

    一 ThinkPHP Insert 添加数据 ThinkPHP 内置的 add 方法用于向数据表添加数据 xff0c 相当于 SQL 中的 INSERT INTO 行为 添加数据 add 方法是 CURD xff08 Create Upda
  • PHP文件上传的实现及其介绍

    关于实现及介绍在程序注释中 提交文件的页面 xff1a xff08 可以分别提交到doAction php doAction1 php doAction2 php进行测试 xff09 upload php lt doctype html g
  • PHP单文件上传的过程化函数封装

    提交文件的页面 xff1a upload php lt doctype html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt
  • PHP的单个文件上传、多个单文件上传、多文件上传

    单文件上传 upload1 php lt doctype html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt title g
  • PHP实现单文件上传、多个单文件上传、多文件上传的过程化封装

    上回提到 PHP的单个文件上传 多个单文件上传 多文件上传 这里给出 三种方式的统一实现 下面先给出各种方式的文件提交页面 xff1a 单个文件上传 upload1 php lt doctype html gt lt html lang 6
  • PHP的单文件上传类

    提交单文件的页面 upload php lt doctype html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt title
  • PHP的多文件上传类

    提交表单的页面 upload php lt doctype html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt title
  • Nginx负载均衡配置实例详解

    转载自 xff1a http www php100 com html program nginx 2013 0905 5525 html 负载均衡是我们大流量网站要做的一个东西 xff0c 下面我来给大家介绍在Nginx服务器上进行负载均衡
  • 基于Bootstrap使用jQuery实现简单可编辑表格

    editTable js 提供编辑表格当前行 添加一行 删除当前行的操作 xff0c 其中可以设置参数 xff0c 如 xff1a operatePos 用于设置放置操作的列 xff0c 从0开始 xff0c 1表示以最后一列作为放置操作的
  • ThinkPHP 大D方法思想下的JDBC操作数据库D类

    这里我封装出来的D 类 xff0c 是根据 ThinkPHP 中的 D 方法中做出来的 xff0c 其中有些出入的地方 xff0c 我进行了一些个性化的修正 xff0c 如 xff1a ThinkPHP 中操作数据库时 xff0c 需要在配
  • 基于MVC设计模式实现简单PHP框架(雏形)-初期

    xff08 记住 xff1a 这里只是提供思考的过程 xff09 其实这里只是一个我们课的Web实验 课程设计题目统计系统 xff0c 在做实验的过程中起初只是想往MVC靠拢而已 xff0c 却不知不觉地 实现 了基于MVC的简单框架的雏形
  • Rocketmq入门介绍

    目录 一 Rocketmq优势 二 Rocketmq与其他MQ对比 三 MQ基本概念 四 RocketMQ的4个组件 五 集群部署结构 工作流程 xff1a 模块功能特性 xff1a Nameserver Broker 生产者 Produc
  • 我的简单PHP框架——LabPHP

    就我上次提到的 基于MVC设计模式实现简单PHP框架 xff08 雏形 xff09 初期 这次列出我实现的LabPHP简易框架 xff0c 该框架中没有使用任何的模板引擎 xff0c 所以说要在模板中使用到php变量的话 xff0c 仍然需
  • 我的LabPHP框架的Demo应用——课程设计题目统计系统

    1 界面制作 xff08 为了方便起见 xff0c 这里我采用了Bootstrap 框架制作界面 xff09 xff1b 2 数据库设计 xff0c 正确创建students 表 xff1b admin表 xff1a 3 项目目录结构如下