为了让老师在学生考试完,高效快速的把成绩总结和录入,我们开发这样的一个平台
首先我们要在数据库中创建两张表 一张学生表和成绩表 双表关联 建表注意一下几点
1 时间字段的设计: 存储年:月:日; date
2 年龄字段的设计: 存储时:出生日期;
3 性别字段的设计: 存储时 能否限定 只存男 or 女;
4 姓名字段的设计: 注意 存储长度;
5 email字段的设计: 注意 存储长度;
//把学生表的学生基本信息查询出来 做添加页面
header("content-type:text/html;charset=utf-8");
//链接数据库 mysql_connect('127.0.0.1','root','root') or die('链接失败'); mysql_select_db('demo') or die('打开失败');
//查询学生表数据 $sql="select * from student";
//执行 $rel=mysql_query($sql);
//循环取出数据 while($arr=mysql_fetch_assoc($rel)){ $arr1[]=$arr; }
//把学生信息展示出来 做添加页面 添加考试成绩和时间 进行多条添加
<form action="student_do.php" method="post"> <table border="1"> <tr> <td>学生id</td> <td>入学时间</td> <td>姓名</td> <td>性别</td> <td>分数</td> <td>考试时间</td> </tr> <?php foreach($arr1 as $k=>$v){?>//把数据循环你展示出来 <input type="hidden" value="<?php echo $v['s_id']?>" name="s_id[]"> <tr> <td><?php echo $v['s_id']?></td> <td><?php echo $v['s_time']?></td> <td><?php echo $v['s_name']?></td> <td><?php echo $v['s_sex']?></td> <td><input type="text" name="g_grade[]" placeholder="请输入考试成绩"></td>//input添加成绩和时间 <td><input type="date" name="time[]" placeholder="请输入考试时间"></td> </tr> <?php }?> <tr> <td> <input type="submit" value="添加"> <input type="reset"> </td> </tr> </table> </form>
//多个数据 进行处理 添加到数据库
header("content-type:text/html;charset=utf-8"); include_once 'Db.class.php';//包含类分装 $arr=$_POST;//接受多条数据
foreach($arr as $key=>$item)//把数据循进行处理
foreach($item as $k=>$v){//把里面的值二维数组处理成以为数组
$new_data[$k][$key]=$v; } } $db=new Db();//实例化
//循环添加数据 把接受的数据添加到数据库 foreach($new_data as $k=>$v) { if ($v['g_grade'] != '' && $v['time'] != '') { $res = $db->add('grade', $v); } } if($res){ echo '添加成功'; header("refresh:2;url='grade.php'"); }else{ echo '添加失败'; header("refresh:2;url='student.php'"); }
//查询数据进行展示
mysql_connect('127.0.0.1','root','root') or die('链接失败');
mysql_select_db('demo') or die('打开失败'); $sql="select * from student join grade on student.s_id=grade.s_id "; $rel=mysql_query($sql); while($arr=mysql_fetch_assoc($rel)){ $arr1[]=$arr; }
//循环展示数据 并搜索数据
<table border="1"> <tr> <td>学生姓名</td> <td>分数</td> <td>考试时间</td> </tr> <?php if(empty($arr1)){ echo "";}else{ foreach( $arr1 as $k=>$v){?> <tr> <td><?php echo $v['s_name']?></td> <td><?php echo $v['g_grade']?></td> <td><?php echo $v['time'] ?></td> </tr> <?php }} ?> </table>//搜索数据 一个是模糊查询 一个是 按照分数查询
<form action="a.php" method="post"> <tr> <input type="text" name="key"> </tr> <table> <tr> <td> <select name="keyword" > <option value="0">请选择</option> <option value="1"> < </option> <option value="2"> > </option> <option value="3"> = </option> </select> </td> <td> <select name="grade"> <option value="0" selected> 请添加条件</option> <?php for($i=0;$i<100;$i++){?> <option><?php echo $i ?></option> <?php }?> </select> </td> </tr> <tr> <input type="submit" value="搜索"> </tr> </table> </form>
//新建页面进行搜索的页面
$key=empty($_POST['key'])?'':$_POST['key'];//接受数据 $keyword=empty($_POST['keyword'])?'':$_POST['keyword']; $grade=empty($_POST['grade'])?'':$_POST['grade']; switch($keyword){ case 1:$where=" where g_grade < $grade and s_name like '%$key%' ";break;//判断搜索的条件 case 2:$where=" where g_grade > $grade and s_name like '%$key%' ";break; case 3:$where=" where g_grade = $grade and s_name like '%$key%' ";break; default:$where="where s_name like '%$key%'"; } mysql_connect('127.0.0.1','root','root') or die('链接失败'); mysql_select_db('demo') or die('打开失败'); $sql="select * from student join grade on student.s_id=grade.s_id ".$where;//查询 $rel=mysql_query($sql); while($arr=mysql_fetch_assoc($rel)){ $arr1[]=$arr; }
如同这样过的页面
//查询最新的考试时间 按照时间最大的方式进行排序
header("content-type:text/html;charset=utf-8"); mysql_connect('127.0.0.1','root','root') or die('链接失败'); mysql_select_db('demo') or die('打开失败'); $sql="select distinct s_id from grade"; $rel=mysql_query($sql); while($arr=mysql_fetch_assoc($rel)){ $arr1[]=$arr; } foreach($arr1 as $k=>$v){ $id=$v['s_id']; $sql2="select * from grade join student on grade.s_id=student.s_id where grade.s_id=$id order by time desc limit 1"; $rel2=mysql_query($sql2); while($arr2=mysql_fetch_assoc($rel2)){ $data[]=$arr2; } }
//把最新的一次成绩循环展示出来
<table border="1"> <tr> <td>学生姓名</td> <td>分数</td> <td>考试时间</td> <td>邮箱</td> <td>操作</td> </tr> <?php foreach( $data as $k=>$v){?> <tr> <td><?php echo $v['s_name']?></td> <td><?php echo $v['g_grade']?></td> <td><?php echo $v['time'] ?></td> <td><?php echo $v['s_email']?></td> <td><input type="button" value="发送邮件" onclick="_email(<?php echo $v['s_id']; ?>)"></td> </tr> <?php } ?> </table> </body> </html>
//用jquery的方式进行接收数据 跳转页面 发送邮件
<script src="Js/jquery-3.2.1.min.js"></script> <script type="text/javascript"> function _email(id){ $.ajax({ type:'post', data:{s_id:id}, dataType:'json', url:"email.php", success:function(json_info){ alert(json_info); } }) } </script>
//发送邮件
//header("content-type:text/html;charset=utf-8"); //include("class.phpmailer.php"); //include("class.smtp.php"); //$mail = new PHPMailer(); //$mail->IsSMTP(); // send via SMTP //$mail->Host = "smtp.163.com"; // SMTP servers //$mail->SMTPAuth = true; // turn on SMTP authentication //$mail->Username = "18210632075"; // SMTP username 注意:普通邮件认证不需要加 @域名 //$mail->Password = "chao1314"; // SMTP password //$mail->From = "[email protected]"; // 发件人邮箱 //$mail->FromName = "zph"; // 发件人 //$mail->CharSet = "utf-8"; // 这里指定字符集! //$mail->Encoding = "base64"; //$mail->AddAddress("[email protected]","111"); // 收件人邮箱和姓名 ////$mail->AddReplyTo("[email protected]","wo"); ////$mail->WordWrap = 50; // set word wrap 换行字数 ////$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment 附件 ////$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); //$mail->IsHTML(true); // send as HTML //// 邮件主题 //$subject="测试"; //$mail->Subject = $subject; //// 邮件内容 //$mail->Body = " //<p>点击激活</p> //<a href='#'>点击激活</a> //"; //$mail->AltBody ="text/html"; //if(!$mail->Send()) //{ // echo "邮件发送有误 <p>"; // echo "邮件错误信息: " . $mail->ErrorInfo; // exit; //} //else { // echo "邮件发送成功!<br />"; //}
在linux中遇到的问题就是 数据库中的数据乱码 解决方案 在链接数据库下面 添加一行代码
mysql_query("set names utf8");
//刚开始发邮件的时候 163发给qq邮件一直退信 被当成垃圾邮件