第二阶段主要完成的工作是:查询数据库中的数据并呈现在Web页面上.
编程语言:Php
使用工具:UltraEdit
具体实现细节:
1. 点击主页面左侧的Top排名查询按钮进入此功能主页面
这通过在Web开发/netflow/customerLeftmenu.htm中的下列代码实现
<tr>
<td> class="hand" onClick="parent.mainFrame.location.href='http://202.195.160.93/netflowProject/topView/topView.php'"onMouseOver="f11.src='./index_vnavbar_b11_over.gif'" onMouseOut="f11.src='./index_vnavbar_b11.gif'">
<img id="f11" src="./index_vnavbar_b11.gif">
</td>
</tr>
2. Php代码编写
由(1)可知当点击查询按钮后链接的是/netflowProject/topView/topView.php页面(所有页
面设计,功能代码都在此实现).
首先,我们必须弄清楚的是:整个页面是个表单.既然是表单,就有其固定样式.其重要特性之一就是Php可以处理表单里的任一元素.
<form action="./topView.php" name="topForm" method="POST">
<input name="submit" type="submit" value="查 询" />
topView.php页中包括起始时间,终止时间,类型选择三个下拉框.一个top数的输入框及一个提交按钮。当用户填写好表单并点击提交按钮时,“topView.php”文件就会被调用.
表单属性method="POST"表明$_REQUEST["year_from"]. $_REQUEST["minutes_to"]
$_REQUEST["type"] $_REQUEST["top"]等变量数据都会在提交时被php语言自动获取.
其实,表单还有另外一种属性就是GET.如果表单的 method属性是 GET的话,表单数据就被设置到 $_GET中而不是 $_ REQUEST中.
//if 有查询条件传过来
if($_REQUEST["year_from"]){
//连接数据库
include("../include/dbconnect-current.php");
include("../myfunc.php");
然后再依据表单中传过来的内容可得出查询条件$condition,再依据此条件进行数据库查询
$sql="select IP, avg(data),count(data) as count_num from top where $condition group by IP order by count_num desc";
top表中的数据按IP地址分组,查询出IP地址,平均数,总量(两列均有相关的函数算出).得出的表格按总量从大到小排列出.
最后,将所查询出的数据输出显示在Web页面上.由于页面大小有限,不可能将所有数据显示,只好由用户自己输入一个显示的top_num来控制显示的长度.
if($_REQUEST["top"]){
$top_num=$_REQUEST["top"];
$sql = "select * from (".$sql." ) where rownum<=$top_num"
写完这些查询语句后,php不会自动执行,还需将这些递交给数据库.
ora_parse($cursor, $sql) or die("Error in query: ".$sql." ". ora_error());
ora_exec($cursor)
最后,将所需查询数据输出到页面
$rank = 0;
while(ora_fetch($cursor)){
$rank += 1;
echo "<tr align=center>";
echo "<td>".$rank."</td>";
echo "<td>".ora_getcolumn($cursor, 0)."</td>"; //取查询后表中第一列数
echo "<td>".convertOctets(ora_getcolumn($cursor, 1))."</td>";//第二列数
echo "<td>".ora_getcolumn($cursor, 2)."</td>";//第三列数
echo "</tr>";
}
断开数据库
include("../include/dbclose-current.php")
四:完成情况:基本上实现在需求分析所要求的功能:将常出现在top排名中的IP地址信息
存入数据库中,并能按用户自身需求分时间段,类型查询.并以图形界面方式呈现给用户.
五:意义:此top排名功能的完成后.对于江苏大学网络中心的校园网络管理提供些可靠性强的数据凭证.辟如:对于某段时间网络拥塞现象可以通过自定时间段的top排名查询看出:哪些IP地址在这段时间内长期占据top排行榜前列,均值多少?多少次上了top排行榜…….
这些都为网络更好地管理提供了更为直观的,有效的,合理的参考依据..
六:不足之处:由于网络流量的数据量大的特点,为了规范数据格式,使数据以更为统一,整齐的方式呈现在用户面前,采用了一系列的数据处理方法,因而使得数据有一定程度的失真表现.另处,对于以哪些数据作为参考凭证也有待进一步考证.这些都将在以后的时间内加以完善.
七:总结及个人心得:
此top排名查询系统虽然工作量小,但涉及到的知识点去非常之多,因为也花去了近两个半月的时间才完成.它牵涉到Perl语言,Oracle数据库.Php语言等等知识点.在这过程中,我意识到了编程最主要的是思想,把握了算法思想,也就掌握了编程的精髓.至于实现,则完全是个实践积累的过程;更为重要的是学会了一些面对问题.困难时的处理方法;也充分认识到了网络这个最为重要的资源共享平台对于计算机系学生学习的重要性.
编程语言:Php
使用工具:UltraEdit
具体实现细节:
1. 点击主页面左侧的Top排名查询按钮进入此功能主页面
这通过在Web开发/netflow/customerLeftmenu.htm中的下列代码实现
<tr>
<td> class="hand" onClick="parent.mainFrame.location.href='http://202.195.160.93/netflowProject/topView/topView.php'"onMouseOver="f11.src='./index_vnavbar_b11_over.gif'" onMouseOut="f11.src='./index_vnavbar_b11.gif'">
<img id="f11" src="./index_vnavbar_b11.gif">
</td>
</tr>
2. Php代码编写
由(1)可知当点击查询按钮后链接的是/netflowProject/topView/topView.php页面(所有页
面设计,功能代码都在此实现).
首先,我们必须弄清楚的是:整个页面是个表单.既然是表单,就有其固定样式.其重要特性之一就是Php可以处理表单里的任一元素.
<form action="./topView.php" name="topForm" method="POST">
<input name="submit" type="submit" value="查 询" />
topView.php页中包括起始时间,终止时间,类型选择三个下拉框.一个top数的输入框及一个提交按钮。当用户填写好表单并点击提交按钮时,“topView.php”文件就会被调用.
表单属性method="POST"表明$_REQUEST["year_from"]. $_REQUEST["minutes_to"]
$_REQUEST["type"] $_REQUEST["top"]等变量数据都会在提交时被php语言自动获取.
其实,表单还有另外一种属性就是GET.如果表单的 method属性是 GET的话,表单数据就被设置到 $_GET中而不是 $_ REQUEST中.
//if 有查询条件传过来
if($_REQUEST["year_from"]){
//连接数据库
include("../include/dbconnect-current.php");
include("../myfunc.php");
然后再依据表单中传过来的内容可得出查询条件$condition,再依据此条件进行数据库查询
$sql="select IP, avg(data),count(data) as count_num from top where $condition group by IP order by count_num desc";
top表中的数据按IP地址分组,查询出IP地址,平均数,总量(两列均有相关的函数算出).得出的表格按总量从大到小排列出.
最后,将所查询出的数据输出显示在Web页面上.由于页面大小有限,不可能将所有数据显示,只好由用户自己输入一个显示的top_num来控制显示的长度.
if($_REQUEST["top"]){
$top_num=$_REQUEST["top"];
$sql = "select * from (".$sql." ) where rownum<=$top_num"
写完这些查询语句后,php不会自动执行,还需将这些递交给数据库.
ora_parse($cursor, $sql) or die("Error in query: ".$sql." ". ora_error());
ora_exec($cursor)
最后,将所需查询数据输出到页面
$rank = 0;
while(ora_fetch($cursor)){
$rank += 1;
echo "<tr align=center>";
echo "<td>".$rank."</td>";
echo "<td>".ora_getcolumn($cursor, 0)."</td>"; //取查询后表中第一列数
echo "<td>".convertOctets(ora_getcolumn($cursor, 1))."</td>";//第二列数
echo "<td>".ora_getcolumn($cursor, 2)."</td>";//第三列数
echo "</tr>";
}
断开数据库
include("../include/dbclose-current.php")
四:完成情况:基本上实现在需求分析所要求的功能:将常出现在top排名中的IP地址信息
存入数据库中,并能按用户自身需求分时间段,类型查询.并以图形界面方式呈现给用户.
五:意义:此top排名功能的完成后.对于江苏大学网络中心的校园网络管理提供些可靠性强的数据凭证.辟如:对于某段时间网络拥塞现象可以通过自定时间段的top排名查询看出:哪些IP地址在这段时间内长期占据top排行榜前列,均值多少?多少次上了top排行榜…….
这些都为网络更好地管理提供了更为直观的,有效的,合理的参考依据..
六:不足之处:由于网络流量的数据量大的特点,为了规范数据格式,使数据以更为统一,整齐的方式呈现在用户面前,采用了一系列的数据处理方法,因而使得数据有一定程度的失真表现.另处,对于以哪些数据作为参考凭证也有待进一步考证.这些都将在以后的时间内加以完善.
七:总结及个人心得:
此top排名查询系统虽然工作量小,但涉及到的知识点去非常之多,因为也花去了近两个半月的时间才完成.它牵涉到Perl语言,Oracle数据库.Php语言等等知识点.在这过程中,我意识到了编程最主要的是思想,把握了算法思想,也就掌握了编程的精髓.至于实现,则完全是个实践积累的过程;更为重要的是学会了一些面对问题.困难时的处理方法;也充分认识到了网络这个最为重要的资源共享平台对于计算机系学生学习的重要性.