为了让老师在学生考试完,高效快速的把成绩总结和录入,我们开发这样的一个平台
首先我们要在数据库中创建两张表 一张学生表和成绩表 双表关联 建表注意一下几点
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="发送邮件" οnclick="_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 = "18210632075@163.com"; // 发件人邮箱
//$mail->FromName = "zph"; // 发件人
//$mail->CharSet = "utf-8"; // 这里指定字符集!
//$mail->Encoding = "base64";
//$mail->AddAddress("18210632075@163.com","111"); // 收件人邮箱和姓名
$mail->AddReplyTo("18210632075@163.com","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邮件一直退信 被当成垃圾邮件