PHP 简单案例[7]
- 问题1
- 问题1代码
- 问题2
- 问题2代码
- 本系列PHP 简单案例通过“问题-代码”的方式介绍各类方法,每篇设置2个PHP综合问题,并给出解决方案。
问题1
存有一个 s 3. p h p \mathrm{s} 3 . \mathrm{php} s3.php 文件的简单PHP程序, 是对学生选课数据库 x s x k x \mathrm{sxk} xsxk 设计一个查询学生选修课程的总学分页面, 要求根据学号查询学生的总学分。
问题1代码
<?php
$conn=mysql_connect("localhost","root","") or die("连接失败");
mysql_select_db("xsxk", $conn) or die("连接数据库失败");
mysql_query("SET NAMES 'gb2312'");
$XH=""
?>
<html >
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<head><title>查询学生学分</title>
<style type="text/css">
<!--
.STYLE1 {font-size: 18px; font-family: "黑体";}
-->
</style>
</head>
<body bgcolor="D9DFAA">
<div align="center"><font face="幼圆" size="5" color="#008000">
<b>查询学生学分</b></font></div><br><br>
<form name="frm1" method="post">
<table width="350" align="center">
<tr><td><span class="STYLE1">学号:</span></td>
<td><input type="text" name="XH" size="10"> </td>
<td><input type="submit" name="select" value="查询"></td></tr>
</table>
</form>
<br><br>
<?php
if(isset($_POST['select']))
{
// **********found**********
$XH=$_POST["XH"];
if(!$XH)
echo "<script>alert('输入不正确!')</script>;";
else
{
// **********found**********
$sql="select sum(课程学分) from 课程,选课 where 选课.学号=$XH and 课程.课程名称=选课.课程名称";
// **********found**********
$result=mysql_query($sql, $conn)
$row=@mysql_fetch_row($result);
// **********found**********
if(!$row)
echo "<script>alert('无选课记录!')</script>;";
}
}
?>
<table width="400" align="center">
<caption><font size=5>查询结果</font></caption><br>
<tr><th><span class="STYLE1">学号</span></th>
<th><span class="STYLE1">总学分</span></th><tr>
<tr><td align=center><span class="STYLE1"><?php echo $XH;?></span></td>
<!--// **********found**********-->
<td align=center><spanclass="STYLE1"><?php echo@$row[0];?>
<size="10"></span></td></tr>
</table>
</body>
</html>
问题2
有 kwgl数据库, 存放试题中所提及的数据表。
kwgl数据库中有学生基本信息表student, 系别表dept。表结构及说明如下: student (sid, sname, score, deptno), 各字段的含义分别是: 学号、姓名、成绩、系别编号。 dept (deptno, deptname), 各字段的含义分别是:系别编号、系名称。
在考生文件夹下有一个sj3.php页面, 如下图所示:
初始情况下(即直接访问si3.php时), 显示出deptno = 10001 =10001 =10001 的院系。然后, 在下拉框中列出所有院系的名称 (deptname), 在点击提交按钮时, 根据用户的选择, 使用 Get方式, 再次将请求发送到本页面进行服务器端处理, 根据Get中参数deptno指定的院系编号, 检索 student表, 显示指定院系所有学生的学号和成绩; 在此响应中, 需保持下拉框中院系的选择情況与用户提交时的选择情况一致。如下图所示:
问题2代码
<?php
if(isset($_GET['dept']))
$deptno=$_GET['dept'];
else
$deptno= '10001';
// **********found**********
$con=mysql_connect("localhost:3306","root","")
or die("数据库服务器连接失败!<br>");
mysql_query("set names 'gbk'");
// **********found**********
mysql_select_db("kwgl",$con) or die( "数据库选择失败!<br>");
// **********found**********
$sql_student="SELECT sid,score FROM student WHERE deptno=$deptno";
$result_student=mysql_query($sql_student,$con);
$sql_dept="SELECT deptno,deptname FROM dept";
$result_dept=mysql_query($sql_dept,$con);
?>
<form action='sj3.php' method='GET'>
请选择一个系:
<select name="dept">
<?php
// **********found**********
while($rows_dept=mysql_fetch_array($result_dept)){
?>
<option value='<?php echo $rows_dept[0];?>'
<?php if($rows_dept[0]==$deptno) echo 'selected="selected"' ?>
>
<?php echo $rows_dept[1];?>
</option>
<?php
}
?>
</select>
<!--// **********found********** -->
<input type="submit"/>
</form>
<table border='1px'>
<tr>
<td>学号</td>
<td>成绩</td>
</tr>
<?php
while($rows_student=mysql_fetch_array($result_student)){
?>
<tr>
<td><?php echo $rows_student[0];?></td>
<td><?php echo $rows_student[1];?></td>
</tr>
<?php
}
mysql_close($con);
?>
</table>