基于Sql Server 2008的分布式数据库的实践(五)

时间:2023-03-08 15:55:13
基于Sql Server 2008的分布式数据库的实践(五)

原文 基于Sql Server 2008的分布式数据库的实践(五)

程序设计

-----------------------------------------------------------------------------------------------------------------

Index.php————选择界面,并且实现学生和老师的注册

sql_ini.php————SQL配置文件

./student————学生的后台

./admin————老师的后台

-----------------------------------------------------------------------------------------------------------------

./student

cookie.php————cookie转跳文件

index1.php————后台界面

login.php————登录界面

loginout.php————cookie注销处理

main.php————主界面

menu.php————后台菜单

sclass.php————显示学生选课信息

score.php-————显示学生成绩

sinfo.php————显示学生资料

sql_ini.php————SQL配置文件

up.php————后台表单处理文件

-----------------------------------------------------------------------------------------------------------------

./admin

class.php————显示老师课程信息

cookie.php————cookie转跳文件

index1.php————后台界面

info.php————显示老师资料(有权限设置)

login.php————登录界面

loginout.php————cookie注销处理

main.php————主界面

menu.php————后台菜单

score.php-————登记学生成绩

sql_ini.php————SQL配置文件

up.php————后台表单处理文件

程序解释

学生注册

基于Sql Server 2008的分布式数据库的实践(五)
 1 if(isset($_POST['addstudent']))
2 {
3 //判断是否有空,即没有输入的
4 if(($_POST['sname']=='')||($_POST['sex']=='')||($_POST['school']=='')||($_POST['scount']=='')||($_POST['spwd1']=='')||($_POST['spwd2']==''))
5 {
6 echo '请输全信息!';
7 exit();
8 }
9 //把传递的数据赋值到变量里面
10 $sname=$_POST['sname'];
11 $sex=$_POST['sex'];
12 $school=$_POST['school'];
13 $scount=$_POST['scount'];
14 $spwd1=$_POST['spwd1'];
15 $spwd2=$_POST['spwd2'];
16 $sid=rand(1,9999);//随机一个学号
17 //判断两次密码是不是相同
18 if($spwd1==$spwd2)
19 {
20 //SQL Server 对数据处理前的操作
21 sql();
22 //SQL语句
23 $sql="select * from [V3].[dbo].[V3_student]";
24 $result = mssql_query($sql);
25 //从结果集中取得一行作为关联数组
26 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
27 {
28 //二次判断是否登录帐号重复
29 if($row['scount']==$scount)
30 {
31 //报错并终止
32 echo ("已经有人申请了这个帐号!");
33 exit();
34 }
35 }
36 //SQL语句插入到视图里面
37 $sql_add="INSERT INTO [V3].[dbo].[V3_student] ([sid],[sex],[sname],[school],[scount],[spwd])
38 VALUES (".$sid.",'".$sex."','".$sname."','".$school."','".$scount."','".$spwd1."')";
39 $result_add = mssql_query($sql_add);
40 //对SQL操作的结果的判断
41 if($result_add)
42 {echo "<center>注册成功!</center>";}
43 else
44 {echo "sql出错!";}
45 }
46 else
47 {
48 //密码不相同报错并终止
49 echo ("两次密码不对");
50 exit();
51 }
52 }
基于Sql Server 2008的分布式数据库的实践(五)

老师注册

基于Sql Server 2008的分布式数据库的实践(五)
 1 if(isset($_POST['addadmin']))
2 {
3 //判断是否有空,即没有输入的
4 if(($_POST['name']=='')||($_POST['sex']=='')||($_POST['age']=='')||($_POST['count']=='')||($_POST['pwd']=='')||($_POST['pwd2']=='')||($_POST['ageage']=='')||($_POST['tel']=='')||($_POST['address']==''))
5 {
6 echo '请输全信息!';
7 exit();
8 }
9 //把传递的数据赋值到变量里面
10 $tname=$_POST['name'];
11 $tsex=$_POST['sex'];
12 $tage=$_POST['age'];
13 $tcount=$_POST['count'];
14 $tpwd=$_POST['pwd'];
15 $tpwd2=$_POST['pwd2'];
16 $age=$_POST['ageage'];
17 $tel=$_POST['tel'];
18 $address=$_POST['address'];
19 $tsuper=1;
20 $tidid=rand(1,9999);
21 //判断两次密码是否相同
22 if($tpwd==$tpwd2)
23 {
24 //SQL Server 对数据处理前的操作
25 sql();
26 //SQL语句
27 $sql="select * from [V3].[dbo].[teacher]";
28 $result = mssql_query($sql);
29 //从结果集中取得一行作为关联数组
30 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
31 {
32 //二次判断是否登录帐号重复
33 if($row['tcount']==$tcount)
34 {
35 //报错并终止
36 echo ("已经有人申请了这个帐号!");
37 exit();
38 }
39 }
40 $sql_add="EXEC [V3].[dbo].[V3_teacher] ".$tidid.",'".$tname."', '".$tage."', '".$tsex."', '".$tcount."', '".$tpwd."', '".$tsuper."','".$age."','".$tel."','".$address."'";
41 $result_add = mssql_query($sql_add);
42 if($result_add)
43 {echo "<center>注册成功!</center>";}
44 else
45 {echo "sql出错!";}
46 }
47 else
48 {
49 //报错并终止
50 echo ("两次密码不对");
51 exit();
52 }
53 }
基于Sql Server 2008的分布式数据库的实践(五)

学生登录和查看资料

基于Sql Server 2008的分布式数据库的实践(五)
 1 //cookie传递id
2 $sid=$_COOKIE['uid'];
3 sql();
4 //SQL 语句
5 $query = "SELECT * FROM [V3].[dbo].[V3_student] where [sid]=".$sid."";
6 $result = mssql_query($query);
7 //取得这个表有多少列
8 $db_t_num=mssql_num_fields($result);
9 //保存字段中文含义
10 $arrname[0]='学号';
11 $arrname[1]='姓名';
12 $arrname[2]='学院';
13 $arrname[3]='帐号';
14 $arrname[4]='密码';
15 /*******************
16 HTML表格输出
17 *******************/
18 echo "<table border='1' >\n";
19 echo "\t<tr>\n";
20 for($num=0;$num<$db_t_num;$num++)
21 {
22 //输出字段中文含义
23 echo "\t\t<td>".$arrname[$num]."</td>\n";
24 }
25 echo "\t</tr>\n";
26 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
27 {
28 //输出内容
29 echo "\t<tr>\n";
30 echo '<td>'.$row["sid"].'</td>';
31 echo '<td>'.$row["sname"].'</td>';
32 echo '<td>'.$row["school"].'</td>';
33 echo '<td>'.$row["scount"].'</td>';
34 echo '<td>******</td>';//隐藏的写法
35 echo "\t</tr>\n";
36 }
37 echo "</table>\n";
38 //释放SQL链接
39 mssql_free_result($result);
基于Sql Server 2008的分布式数据库的实践(五)

学生选课

基于Sql Server 2008的分布式数据库的实践(五)
 1 //GET得到是选课操作
2 if($_GET['action']=='do')
3 {
4 //cookie传递sid
5 $id=$_COOKIE["uid"];
6 sql();
7 //sid选了什么课,使check打上勾
8 $sql_do="SELECT * FROM [V3].[dbo].[class] where [sid]=".$id."";
9 $result_do = mssql_query($sql_do);
10 $ii=0;//保存学生所选的课
11 while ($row = mssql_fetch_array($result_do, MSSQL_ASSOC))
12 {
13 $s_cid_do[$ii]=$row['cid'];
14 $ii++;
15 }
16
17 //SQL语句通过默认学生sid=0取得课名cname和课号cid和老师tid
18 $sql_class="SELECT * FROM [V3].[dbo].[class] where [sid] = 0";
19 $result_class = mssql_query($sql_class);
20 $i=0;//保存有多少行
21 while ($row = mssql_fetch_array($result_class, MSSQL_ASSOC))
22 {
23 $class_tid[$i]=$row['tid'];
24 $class_cid[$i]=$row['cid'];
25 $class_name[$i]=$row['cname'];
26 $i++;
27 }
28 //SQL语句通过tid取得老师名字,教学年龄和性别
29 for($a=0;$a<$i;$a++)
30 {
31 $sql_t[$a]="SELECT * FROM [V3].[dbo].[teacher] where [tid]=".$class_tid[$a]."";
32 $result_t[$a]= mssql_query($sql_t[$a]);
33 while ($class_t = mssql_fetch_array($result_t[$a], MSSQL_ASSOC))
34 {
35 $class_tsex[$a]=$class_t['tsex'];
36 $class_tage[$a]=$class_t['tage'];
37 $class_tname[$a]=$class_t['tname'];
38 }
39 }
40 //保存字段中文含义
41 $arrname[0]='课号';
42 $arrname[1]='课名';
43 $arrname[2]='老师名字';
44 $arrname[3]='老师编号';
45 $arrname[4]='老师教学年龄';
46 $arrname[5]='老师性别';
47 $arrname[6]='选课';
48 /*******************
49 HTML表格输出
50 *******************/
51 echo '<form action="up.php" method="POST">';
52 echo "<table border='1' >\n";
53 echo "\t<tr><td colspan='7' align='center'>选课系统</td></tr>\n";
54 echo "\t<tr>\n";
55 echo "\t<tr>\n";
56 //有6列
57 for($num=0;$num<7;$num++)
58 {
59 echo "\t\t<td>".$arrname[$num]."</td>\n";
60 }
61 for($a=0;$a<$i;$a++)
62 {
63 //check初始化
64 $check = '';
65 //判断是男是女
66 if($class_tsex[$a]=='0')
67 $class_tsex[$a]='男';
68 else
69 $class_tsex[$a]='女';
70 //判断选了这门课
71 for($b=0;$b<$ii;$b++)
72 {
73 if($class_cid[$a]==$s_cid_do[$b])
74 {
75 $check = 'checked';
76 }
77 }
78 echo "\t<tr>\n";
79 echo '<td>'.$class_cid[$a].'</td>';
80 echo '<td>'.$class_name[$a].'</td>';
81 echo '<td>'.$class_tname[$a].'</td>';
82 echo '<td>'.$class_tid[$a].'</td>';
83 echo '<td>'.$class_tage[$a].'</td>';
84 echo '<td>'.$class_tsex[$a].'</td>';
85 echo '<td><input type="checkbox" name=pa_'.$class_cid[$a].' '.$check.'></td>';//name=pa_'.$class_cid[$a]这样写是为了出现BUG
86 echo "\t</tr>\n";
87 }
88 echo "\t<tr><td colspan='7' align='center'><input type='submit' name='sub' value='确认课程'></td></tr>\n";
89 echo "</table>\n";
90 echo "</form>";
91 }
基于Sql Server 2008的分布式数据库的实践(五)

学生退课

基于Sql Server 2008的分布式数据库的实践(五)
 1 //GET传递操作,为退课操作
2 if($_GET['action']=='mine')
3 {
4 //cookie传递sid
5 $id=$_COOKIE["uid"];
6 sql();
7 //SQL语句通过学号sid取得课号cid和tid和课名
8 $sql_s="SELECT * FROM [V3].[dbo].[class] where [sid]=".$id."";
9 $result_s = mssql_query($sql_s);
10 $i=0;//保存有多少行
11 while ($row = mssql_fetch_array($result_s, MSSQL_ASSOC))
12 {
13 $s_cid[$i]=$row['cid'];
14 $s_cname[$i]=$row['cname'];
15 $s_tid[$i]=$row['tid'];
16 $i++;
17 }
18 //SQL语句通过tid得到上课的老师名字以及教学年龄和性别
19 for($a=0;$a<$i;$a++)
20 {
21 $sql_s_t[$a]="SELECT * from [V3].[dbo].[teacher] where [tid]=".$s_tid[$a]."";
22 $result_s_t[$a] = mssql_query($sql_s_t[$a]);
23 while ($s_t = mssql_fetch_array($result_s_t[$a], MSSQL_ASSOC))
24 {
25 $s_tsex[$a]=$s_t['tsex'];
26 $s_tage[$a]=$s_t['tage'];
27 $s_tname[$a]=$s_t['tname'];
28 }
29 }
30 //保存字段中文含义
31 $arrname[0]='课号';
32 $arrname[1]='课名';
33 $arrname[2]='老师名字';
34 $arrname[3]='老师编号';
35 $arrname[4]='老师教学年龄';
36 $arrname[5]='老师性别';
37 $arrname[6]='退课';
38 /*******************
39 HTML表格输出
40 *******************/
41 echo '<form action="up.php" method="POST">';
42 echo "<table border='1' >\n";
43 echo "\t<tr><td colspan='7' align='center'>我选上的课</td></tr>\n";
44 echo "\t<tr>\n";
45 echo "\t<tr>\n";
46 //有7列
47 for($num=0;$num<7;$num++)
48 {
49 echo "\t\t<td>".$arrname[$num]."</td>\n";
50 }
51 echo "\t</tr>\n";
52 for($a=0;$a<$i;$a++)
53 {
54 //判断是男是女
55 if($s_tsex[$a]=='0')
56 $s_tsex[$a]='男';
57 else
58 $s_tsex[$a]='女';
59 echo "\t<tr>\n";
60 echo '<td>'.$s_cid[$a].'</td>';
61 echo '<td>'.$s_cname[$a].'</td>';
62 echo '<td>'.$s_tname[$a].'</td>';
63 echo '<td>'.$s_tid[$a].'</td>';
64 echo '<td>'.$s_tage[$a].'</td>';
65 echo '<td>'.$s_tsex[$a].'</td>';
66 echo '<td><input type="checkbox" name="ma_'.$s_cid[$a].'" ></td></td>';
67 echo "\t</tr>\n";
68 }
69 echo "\t<tr><td colspan='7' align='center'><input type='submit' name='delsub' value='确认退课'></td></tr>\n";
70 echo "</table>\n";
71 echo "</form>";
72 }
基于Sql Server 2008的分布式数据库的实践(五)

学生查看成绩

基于Sql Server 2008的分布式数据库的实践(五)
 1 //通过cookie得到sid
2 $id=$_COOKIE['uid'];
3 sql();
4 //SQL语句通过学号sid取得课号cid和tid和课名
5 $sql_s="SELECT * FROM [V3].[dbo].[class] where [sid]=".$id."";
6 $result_s = mssql_query($sql_s);
7 $i=0;//保存有多少行
8 while ($row = mssql_fetch_array($result_s, MSSQL_ASSOC))
9 {
10 $s_cid[$i]=$row['cid'];
11 $s_cname[$i]=$row['cname'];
12 $s_tid[$i]=$row['tid'];
13 $s_score[$i]=$row['score'];
14 $i++;
15 }
16 //SQL语句通过tid得到上课的老师名字以及教学年龄和性别
17 for($a=0;$a<$i;$a++)
18 {
19 $sql_s_t[$a]="SELECT * from [V3].[dbo].[teacher] where [tid]=".$s_tid[$a]."";
20 $result_s_t[$a] = mssql_query($sql_s_t[$a]);
21 while ($s_t = mssql_fetch_array($result_s_t[$a], MSSQL_ASSOC))
22 {
23 $s_tsex[$a]=$s_t['tsex'];
24 $s_tage[$a]=$s_t['tage'];
25 $s_tname[$a]=$s_t['tname'];
26 }
27 }
28 //保存字段中文含义
29 $arrname[0]='课号';
30 $arrname[1]='课名';
31 $arrname[2]='老师名字';
32 $arrname[3]='老师编号';
33 $arrname[4]='老师教学年龄';
34 $arrname[5]='老师性别';
35 $arrname[6]='分数';
36 /*******************
37 HTML表格输出
38 *******************/
39 echo "<table border='1' >\n";
40 echo "\t<tr><td colspan='7' align='center'>我选上的课</td></tr>\n";
41 echo "\t<tr>\n";
42 echo "\t<tr>\n";
43 //有7列
44 for($num=0;$num<7;$num++)
45 {
46 echo "\t\t<td>".$arrname[$num]."</td>\n";
47 }
48 echo "\t</tr>\n";
49 for($a=0;$a<$i;$a++)
50 {
51 if($s_tsex[$a]=='0')
52 $s_tsex[$a]='男';
53 else
54 $s_tsex[$a]='女';
55 //判断是否上成绩,若为999,则是没有上成绩
56 if($s_score[$a]=='999')
57 {
58 $s_score[$a]='未上成绩';
59 }
60 echo "\t<tr>\n";
61 echo '<td>'.$s_cid[$a].'</td>';
62 echo '<td>'.$s_cname[$a].'</td>';
63 echo '<td>'.$s_tname[$a].'</td>';
64 echo '<td>'.$s_tid[$a].'</td>';
65 echo '<td>'.$s_tage[$a].'</td>';
66 echo '<td>'.$s_tsex[$a].'</td>';
67 echo '<td>'.$s_score[$a].'</td>';
68
69 echo "\t</tr>\n";
70 }
71 echo "</table>\n";
基于Sql Server 2008的分布式数据库的实践(五)

老师登录和查看所有资料(权限限制)

基于Sql Server 2008的分布式数据库的实践(五)
 1 //GET传递信息,显示所以老师(权限限制)
2 if($_GET['people']=='all')
3 {
4 if($_COOKIE["super"]=='10')
5 {
6 sql();
7 //SQL 语句
8 $query = "SELECT * FROM [V3].[dbo].[teacher]";
9 $result = mssql_query($query);
10
11 /*******************
12 HTML表格输出
13 *******************/
14 echo "<table border='1' >\n";
15 //取得结果集中字段的数目
16 $db_t_num=mssql_num_fields($result);
17 //保存字段中文含义
18 $arrname[0]='编号';
19 $arrname[1]='姓名';
20 $arrname[2]='教学年龄';
21 $arrname[3]='性别';
22 $arrname[4]='登录帐号';
23 $arrname[5]='登录密码';
24 $arrname[6]='管理权限';
25
26 echo "\t<tr>\n";
27 for($num=0;$num<$db_t_num;$num++)
28 {
29 echo "\t\t<td>".$arrname[$num]."</td>\n";
30 }
31 echo "\t</tr>\n";
32 //从结果集中取得一行作为关联数组
33 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
34 {
35 //判断之后显示男女中文
36 if($row["tsex"]=='0')
37 $row["tsex"]='男';
38 else
39 $row["tsex"]='女';
40 //判断是不是超级管理员
41 if($row["tsuper"]=='10')
42 $row["tsuper"]='超级老师管理员';
43 else
44 $row["tsuper"]='普通老师管理员';
45
46 //输出内容
47 echo "\t<tr>\n";
48 echo '<td>'.$row["tid"].'</td>';
49 echo '<td>'.$row["tname"].'</td>';
50 echo '<td>'.$row["tage"].'</td>';
51 echo '<td>'.$row["tsex"].'</td>';
52 echo '<td>'.$row["tcount"].'</td>';
53 echo '<td>******</td>';//隐藏的写法
54 echo '<td>'.$row["tsuper"].'</td>';
55 echo "\t</tr>\n";
56 }
57 echo "</table>\n";
58
59 //释放SQL链接
60 mssql_free_result($result);
61 }
62 else
63 {
64 echo "没有权限查看!";
65 }
66 }
基于Sql Server 2008的分布式数据库的实践(五)

老师查看资料

基于Sql Server 2008的分布式数据库的实践(五)
 1 //GET传递信息,显示自己信息
2 if($_GET['people']=='me')
3 {
4 //cookie传输tid
5 $id=$_COOKIE["uid"];
6 //SQL 语句
7 $query = "SELECT * FROM [V3].[dbo].[teacher] where tid=".$id."";
8 $result = mssql_query($query);
9 /*******************
10 HTML表格输出
11 *******************/
12 echo "<table border='1' >\n";
13 //取得结果集中字段的数目
14 $db_t_num=mssql_num_fields($result);
15 //保存字段中文含义
16 $arrname[0]='编号';
17 $arrname[1]='姓名';
18 $arrname[2]='教学年龄';
19 $arrname[3]='性别';
20 $arrname[4]='登录帐号';
21 $arrname[5]='登录密码';
22 $arrname[6]='管理权限';
23
24 echo "\t<tr>\n";
25 for($num=0;$num<$db_t_num;$num++)
26 {
27 echo "\t\t<td>".$arrname[$num]."</td>\n";
28 }
29 echo "\t</tr>\n";
30 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
31 {
32 //判断之后显示男女中文
33 if($row["tsex"]=='0')
34 $row["tsex"]='男';
35 else
36 $row["tsex"]='女';
37 //判断是不是超级管理员
38 if($row["tsuper"]=='10')
39 $row["tsuper"]='超级老师管理员';
40 else
41 $row["tsuper"]='普通老师管理员';
42
43 //输出内容
44 echo "\t<tr>\n";
45 echo '<td>'.$row["tid"].'</td>';
46 echo '<td>'.$row["tname"].'</td>';
47 echo '<td>'.$row["tage"].'</td>';
48 echo '<td>'.$row["tsex"].'</td>';
49 echo '<td>'.$row["tcount"].'</td>';
50 echo '<td>******</td>';//隐藏的写法
51 echo '<td>'.$row["tsuper"].'</td>';
52 echo "\t</tr>\n";
53 }
54 echo "</table>\n";
55
56 //释放SQL链接
57 mssql_free_result($result);
58 }
基于Sql Server 2008的分布式数据库的实践(五)

老师添加老师(权限限制)

基于Sql Server 2008的分布式数据库的实践(五)
 1 //POST传递信息
2 if(isset($_POST['addsub']))
3 {
4 //把传递的信息传到变量里面
5 $tname=$_POST['name'];
6 $tsex=$_POST['sex'];
7 $tage=$_POST['age'];
8 $tcount=$_POST['count'];
9 $tpwd=$_POST['pwd'];
10 $tpwd2=$_POST['pwd2'];
11 $tsuper=$_POST['super'];
12 $tidid=$_POST['idid'];
13 $age=$_POST['ageage'];
14 $tel=$_POST['tel'];
15 $address=$_POST['address'];
16 //判断两次密码是否相同
17 if($tpwd==$tpwd2)
18 {
19 sql();
20 //SQL语句
21 $sql="select * from [V3].[dbo].[teacher]";
22 $result = mssql_query($sql);
23 //从结果集中取得一行作为关联数组
24 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
25 {
26 //二次判断是否登录帐号重复
27 if($row['tcount']==$tcount)
28 {
29 //报错并终止
30 echo ("已经有人申请了这个帐号!");
31 exit();
32 }
33 }
34 //执行SQL语句插入
35 $sql_add="EXEC [V3].[dbo].[V3_teacher] ".$tidid.",'".$tname."', '".$tage."', '".$tsex."', '".$tcount."', '".$tpwd."', '".$tsuper."','".$age."','".$tel."','".$address."'";
36 $result_add = mssql_query($sql_add);
37 if($result_add)
38 {echo "添加成功!";}
39 else
40 {echo "sql出错!";}
41 }
42 else
43 {
44 //报错并终止
45 echo ("两次密码不对");
46 exit();
47 }
48 }
基于Sql Server 2008的分布式数据库的实践(五)

老师删减老师(权限限制)

基于Sql Server 2008的分布式数据库的实践(五)
 1 //POST传递信息
2 if(isset($_POST['delsub']))
3 {
4 sql();
5 $tid=$_POST['id'];
6 $sql="DELETE FROM [V3].[dbo].[teacher] where [tid]=".$tid."";
7 $result = mssql_query($sql);
8 if($result)
9 {echo "删除成功";}
10 else
11 {echo "SQL出错!";}
12 }
基于Sql Server 2008的分布式数据库的实践(五)

老师添加课程

基于Sql Server 2008的分布式数据库的实践(五)
 1 //POST传递信息
2 if(isset($_POST['addclass']))
3 {
4 sql();
5 //POST传递信息
6 $tid=$_POST['id'];
7 $cname=$_POST['name'];
8 //SQL语句插入
9 $sql="INSERT INTO [V3].[dbo].[class] ([sid], [tid], [cname],[score],[cid]) VALUES (0, ".$tid.", '".$cname."',999,".rand(1,999).")";
10 $result = mssql_query($sql);
11 if($result)
12 {echo "创建课程成功";}
13 else
14 {echo "SQL出错!";}
15 }
基于Sql Server 2008的分布式数据库的实践(五)

老师查看选课情况

基于Sql Server 2008的分布式数据库的实践(五)
 1 if($_GET['action']=='list')
2 {
3 //cookie传递tid
4 $id=$_COOKIE["uid"];
5 sql();
6 //SQL语句取得编号tid老师以及默认学生sid=0,得到课名cname和课号cid
7 $sql_class="SELECT * FROM [V3].[dbo].[class] where [tid]=".$id." AND [sid] = 0";
8 $result_class = mssql_query($sql_class);
9 $i=0;//保存有多少行
10 while ($row = mssql_fetch_array($result_class, MSSQL_ASSOC))
11 {
12 $class_id[$i]=$row['cid'];
13 $class_name[$i]=$row['cname'];
14 $i++;
15 }
16 //SQL语句通过tid和cid得到有多少学生选课
17 for($a=0;$a<$i;$a++)
18 {
19 $sql_num[$a]="SELECT * FROM [V3].[dbo].[class] where [tid]=".$id." AND [cid] = ".$class_id[$a]."";
20 $result_num[$a]= mssql_query($sql_num[$a]);
21 $class_num[$a]=mssql_num_rows($result_num[$a]);
22 }
23 //保存字段中文含义
24 $arrname[0]='课号';
25 $arrname[1]='课名';
26 $arrname[2]='选课人数';
27 /*******************
28 HTML表格输出
29 *******************/
30 echo "<table border='1' >\n";
31 echo "\t<tr><td colspan='3' align='center'>老师号:".$id."</td></tr>\n";
32 echo "\t<tr>\n";
33 //有3列
34 for($num=0;$num<3;$num++)
35 {
36 echo "\t\t<td>".$arrname[$num]."</td>\n";
37 }
38 echo "\t</tr>\n";
39 for($a=0;$a<$i;$a++)
40 {
41 //删去sid为0的
42 $class_num[$a]=$class_num[$a]-1;
43 echo "\t<tr>\n";
44 echo '<td>'.$class_id[$a].'</td>';
45 echo '<td>'.$class_name[$a].'</td>';
46 echo '<td>'.$class_num[$a].'</td>';
47 echo "\t</tr>\n";
48 }
49 echo "</table>\n";
50 }
51 ?>
基于Sql Server 2008的分布式数据库的实践(五)

老师删减课程

基于Sql Server 2008的分布式数据库的实践(五)
 1 //POST传递信息
2 if(isset($_POST['delclass']))
3 {
4 sql();
5 //POST传递信息
6 $cid=$_POST['cid'];
7 //SQL进行删减操作
8 $sql="DELETE FROM [V3].[dbo].[class] where [cid]=".$cid."";
9 $result = mssql_query($sql);
10 if($result)
11 {echo "删除课程成功";}
12 else
13 {echo "SQL出错!";}
基于Sql Server 2008的分布式数据库的实践(五)

老师查看成绩

基于Sql Server 2008的分布式数据库的实践(五)
 1 //GET传递信息
2 if($_GET['action']=='show')
3 {
4 sql();
5 //cookie传输tid
6 $id=$_COOKIE["uid"];
7 //SQL语句通过tid取得课号cid
8 $sql_t="SELECT * FROM [V3].[dbo].[class] where [sid]=0 AND [tid] = ".$id."";
9 $result_t = mssql_query($sql_t);
10 $i=0;//保存老师有多少课程
11 while ($row = mssql_fetch_array($result_t, MSSQL_ASSOC))
12 {
13 $t_cid[$i]=$row['cid'];
14 $t_cname[$i]=$row['cname'];
15 $i++;
16 }
17 //将cid,sid,score存入数组
18 for($a=0;$a<$i;$a++)
19 {
20 //通过cid找到选课了的学生
21 $sql_t_s="SELECT * FROM [V3].[dbo].[class] where [cid]=".$t_cid[$a]." AND [tid] = ".$id."";
22 $result_t_s = mssql_query($sql_t_s);
23 $ii=0;//保存每个课程的学生人数
24 while($row_ready = mssql_fetch_array($result_t_s, MSSQL_ASSOC))
25 {
26 $t_sid[$a][$ii]=$row_ready['sid'];
27 $t_score[$a][$ii]=$row_ready['score'];
28 $ii++;
29 }
30 $num[$a]=$ii;//把每个课程的人数存到数组里面
31 }
32 //通过sid找到sname
33 for($b=0;$b<$i;$b++)
34 {
35 for($c=0;$c<$num[$b];$c++)
36 {
37 //通过cid找到选课了的学生
38 $sql_sn="SELECT * FROM [V3].[dbo].[V3_student] where [sid]=".$t_sid[$b][$c]."";
39 $result_sn = mssql_query($sql_sn);
40 while($row_sn = mssql_fetch_array($result_sn, MSSQL_ASSOC))
41 {
42 $t_sname[$b][$c]=$row_sn['sname'];
43 }
44 }
45 }
46 //列出老师的课程
47 if($_GET['cid']=='0')
48 {
49 for($dd=0;$dd<$i;$dd++)
50 {
51 echo "<a href='score.php?action=show&cid=".$t_cid[$dd]."'>查看__".$t_cname[$dd]."__课程情况!</a><br>";
52 }
53 }
54 for($ddd=0;$ddd<$i;$ddd++)
55 {
56 if($_GET['cid']==$t_cid[$ddd])
57 {
58 //保存字段中文含义
59 $arrname[0]='课号';
60 $arrname[1]='课名';
61 $arrname[2]='学生号';
62 $arrname[3]='学生名';
63 $arrname[4]='成绩';
64 /*******************
65 HTML表格输出
66 *******************/
67 echo "<table border='1' >\n";
68 echo "\t<tr>\n";
69 //5列
70 for($num5=0;$num5<5;$num5++)
71 {
72 echo "\t\t<td>".$arrname[$num5]."</td>\n";
73 }
74 echo "\t</tr>\n";
75
76 for($e=0;$e < $num[ $ddd ];$e++)
77 {
78 if($t_score[$ddd][$e]=="999")
79 {
80 $t_score[$ddd][$e]="未上传成绩";
81 }
82 if($t_sid[$ddd][$e]=='0')
83 {
84 //不显示默认为0的学生
85 continue;
86 }
87 //输出内容
88 echo "\t<tr>\n";
89 echo '<td>'.$t_cid[$ddd].'</td>';
90 echo '<td>'.$t_cname[$ddd].'</td>';
91 echo '<td>'.$t_sid[$ddd][$e].'</td>';
92 echo '<td>'.$t_sname[$ddd][$e].'</td>';
93 echo '<td>'.$t_score[$ddd][$e].'</td>';
94 echo "\t</tr>\n";
95 }
96 echo "</table>\n";
97 }
98 }
99 }
基于Sql Server 2008的分布式数据库的实践(五)

老师上传成绩

基于Sql Server 2008的分布式数据库的实践(五)
 1 if(isset($_POST['up']))
2 {
3 sql();
4 //cookie传输tid
5 $id=$_COOKIE["uid"];
6 //POST传输得到cid
7 $up_cid=$_POST['cid'];
8 //通过cid和tid找到选课了的学生
9 $sql_s="SELECT * FROM [V3].[dbo].[class] where [cid]=".$up_cid." AND [tid] = ".$id."";
10 $result_s = mssql_query($sql_s);
11 $i=0;//保存有多少学生
12 while ($row = mssql_fetch_array($result_s, MSSQL_ASSOC))
13 {
14 $up_score[$i]=$row['score'];
15 $up_sid[$i]=$row['sid'];
16 $i++;
17 }
18 for($a=0;$a<$i;$a++)
19 {
20 if($up_sid[$a]=='0')
21 {
22 //忽略默认sid为0的学生
23 continue;
24 }
25 //判断是不是数字
26 if(is_numeric($_POST["sid_$up_sid[$a]"]))
27 {
28 //判断是否在0~100之内
29 if($_POST["sid_$up_sid[$a]"]<=100&&$_POST["sid_$up_sid[$a]"]>=0)
30 {
31 //POST传递给up_score数组
32 $up_score[$a]=$_POST["sid_$up_sid[$a]"];
33 }
34 else
35 {echo "输入0~100之内的数字成绩!<br>";}
36 }
37 else
38 {echo "输入数字!<br>";}
39 //SQL语句更新score
40 $sql_up_score="UPDATE [V3].[dbo].[class] SET [score] = ".$up_score[$a]." WHERE [cid] =".$up_cid." AND [sid] =".$up_sid[$a]."";
41 $result_up_score = mssql_query($sql_up_score);
42 if($result_up_score)
43 {echo "上传成绩成功!";}
44 else
45 {echo "上传失败!";}
46 }
47 }
基于Sql Server 2008的分布式数据库的实践(五)

反省:代码不整洁,因为这是老师布置的一个作业,做的比较匆忙,只是解决了里面出现的一些error和warning,并没有对代码进行优化,还有对网站安全的处理,比如SQL注入等没有做出处理。

这些只是部分代码,希望大家看得过去。。。

转载请注明出处:http://www.cnblogs.com/yydcdut/p/3461254.html