这个章节将讲解分层模式对雇员管理系统的系统,首先看下基本的流程图设计:



下面是具体的代码:

1、login.php(参照上节)
2、loginProcess.php
<?php
/**
*
* @author jsh
* @version
*/ require_once 'AdminService.class.php';
//接受用户数据
$id=$_POST['id'];
$password=$_POST['password']; //实例化对象
$adminService=new AdminService(); if(($name=$adminService->checkAdmin($id, $password)) != ""){
header("Location:https://192.168.1.110/myphp/manage/empManage.php?name=$name");
exit();
} else {
header("Location:https://192.168.1.110/myphp/manage/login.php?errno=1");
exit();
}
?>

3、empmain.php(参照上节)
4、empList.php
<html>
<head>
<meta http-equiv="content-tpe" content="text/html;charset-utf-8"/>
<title>雇员管理列表</title>
<script type="text/javascript">
<!--
function check(){
return window.confirm("是否要删除用户");
}
//-->
</script>
</head> <?php
include_once 'EmpService.class.php';
include_once 'FenyePage.class.php';
/*
$pageNow :显示第几页:用户输入
$pageCount:共有几页[]
$rowCount:共有多少条记录[数据库获取]
$pagesize:每页显示几条记录[人为定义]
*/ if(!empty($_GET['flag'])){
$id=$_GET['Id'];
$empservice=new empService();
$empservice->delUserById($id);
}
if(!empty($_GET['pageNow'])){
$pageNow = $_GET['pageNow'];
} else {
$pageNow = 1;
} $fenyePage=new fenyepage();
$fenyePage->pageSize = 3;
$fenyePage->pageNow = $pageNow;
$fenyePage->page_num=3; //获取共有多少记录
$empservice=new empService();
$pageCount=$empservice->getFenYePageInfo($fenyePage);
echo "<h1>雇员管理系统</h1>";
echo "<table width='700px' border='1px'>";
echo "<tr><th>Id</th><th>Name</th><th>Grade</th><th>Email</th><th>Salary</th><th>删除用户</th><th>修改用户</th></tr>"; for($i=0;$i<count($fenyePage->res_array);$i++){
$row=$fenyePage->res_array[$i];
echo "<tr><th>{$row['Id']}</th><th>{$row['Name']}</th><th>{$row['Grade']}</th>".
"<th>{$row['Email']}</th><th>{$row['Salary']}</th><th><a onclick='return check()' href='empList.php?flag=1&Id={$row['Id']}'>删除用户</a></th>".
"<th><a href='empList.php?pageNow={$row['Id']}'>修改用户</a></th></tr>";
}
echo "</table>"; echo $fenyePage->navigation_bars;
/* //打印上一页下一页
if($fenyePage->pageNow>1){
$prepage = $fenyePage->pageNow - 1;
echo "<a href='empList.php?pageNow=$prepage'>上一页</a>";
}
if($fenyePage->pageNow<$fenyePage->pageCount){
$nextpage = $fenyePage->pageNow + 1;
echo "<a href='empList.php?pageNow=$nextpage'>下一页</a>";
} //翻页
$start=floor(($fenyePage->pageNow - 1)/$fenyePage->page_num) * $fenyePage->page_num + 1;
$index = $start; for(;$start < $fenyePage->pageCount && $start<$index + $fenyePage->page_num;$start++){
echo "<a href='empList.php?pageNow=$start'>[$start]</a>";
}
//显示当前页和共有多少页
echo "  当前页{$fenyePage->pageNow}/共{$fenyePage->pageCount}页";
*/ ?>
<!-- 指定跳转到某页 -->
<form action="empList.php" method="get"> 跳转到:<input type="text" name="pageNow"/>
<input type="submit" value="GO"/>
</form> </html>

5、AdminService.class.php

<?php
//该类是一个业务逻辑处理类,
require_once 'SqlHelper.class.php';
class AdminService {
//提供一个验证用户是否合法的方法 public function checkAdmin($id,$password){
$sql="select * from admin where Id=$id"; //创建一个SqlHelper对象
$sqlHelper=new SqlHelper();
//执行查询命令
$res=$sqlHelper->execute_dql($sql);
if($row=mysql_fetch_assoc($res)){
if(md5($password) == $row['Password']){ return $row['Name'];
}
}
//释放资源
mysql_free_result($res);
//关闭链接
$sqlHelper->close_connect(); return "";
} } ?>

6、empService.class.php

<?php
require_once 'SqlHelper.class.php';
class empService { //一个函数可以获得多少页
function getPageCount($pagesize){
//需要查询$rowcount
$sql="select count(Id) from emp";
$sqlHelper=new SqlHelper();
$result=$sqlHelper->execute_dql($sql); if($row=mysql_fetch_row($result)){
$pageCount=ceil($row[0]/$pagesize);
}
//释放资源
mysql_free_result($result);
//关闭连接
$sqlHelper->close_connect();
return $pageCount;
} //获得当前页的雇员信息
function getEmpListByPage($pageNow,$pageSize){
$sql="select * from emp limit ".($pageNow-1)*$pageSize.",$pageSize"; $sqlHelper=new SqlHelper();
$res=$sqlHelper->execute_dql2($sql); //关闭连接
$sqlHelper->close_connect(); return $res;
}
//分页
public function getFenYePageInfo($fenyePage){
$sqlHelper=new SqlHelper();
$sql1="select * from emp limit ".($fenyePage->pageNow - 1)*$fenyePage->pageSize.",$fenyePage->pageSize";
$sql2="select count(Id) from emp";
$php_name="empList.php";
$sqlHelper->exectue_dql_fenye($sql1, $sql2, $fenyePage,$php_name);
//关闭链接
$sqlHelper->close_connect();
return $fenyePage; } //删除用户
public function delUserById($id){
$sql="delete from emp where Id='$id'";
$sqlHelper = new SqlHelper();
$res=$sqlHelper->execute_dml($sql);
return $res;
}
}
?>

7、SqlHelper.class.php

<?php
//这是一个工具类,作用是完成对数据库的基本操作
class SqlHelper {
public $conn;
public $dbname="manage";
public $usename="root";
public $password="";
public $host="192.168.1.110:3306"; //构造方法,连接及选择数据库
public function __construct(){
$this->conn=mysql_connect($this->host,$this->usename,$this->password);
if(!$this->conn){
die("连接失败".mysql_error());
}
mysql_select_db($this->dbname,$this->conn);
} //执行dql语句 查询
public function execute_dql($sql){
$res=mysql_query($sql,$this->conn) or die("执行失败".mysql_error());
return $res;
} //省去资源释放的
public function execute_dql2($sql){
$res=mysql_query($sql,$this->conn) or die("执行失败".mysql_error());
$arr=array();
$i=0;
while ($row=mysql_fetch_assoc($res)){ $arr[$i++]=$row;
}
//释放资源
mysql_free_result($res);
return $arr;
} /* 考虑分页情况的查询
$sql1="select count(Id) from 表名";
$sql2="select * from 表名 limit x,y"; */
public function exectue_dql_fenye($sql1,$sql2,&$fenyePage,$php_name){
$navigation_bars="";
$res=mysql_query($sql1,$this->conn) or die("执行失败".mysql_error());
$arr=array();
$i=0;
while ($row=mysql_fetch_assoc($res)){
$arr[$i++]=$row;
}
//释放资源
mysql_free_result($res); //获得数据库共有多少行
$res=mysql_query($sql2,$this->conn) or die(mysql_errno());
if($row=mysql_fetch_row($res)){
$fenyePage->row_Count=$row[0];
} $fenyePage->res_array=$arr;
//共有多少页
$fenyePage->pageCount = ceil($fenyePage->row_Count/$fenyePage->pageSize);
//释放资源
mysql_free_result($res); if($fenyePage->pageNow>1){
$prepage = $fenyePage->pageNow - 1;
$navigation_bars="<a href='$php_name?pageNow=$prepage'>上一页</a>";
}
if($fenyePage->pageNow<$fenyePage->pageCount){
$nextpage = $fenyePage->pageNow + 1;
$navigation_bars .= "<a href='$php_name?pageNow=$nextpage'>下一页</a>";
} //翻页
$start=floor(($fenyePage->pageNow - 1)/$fenyePage->page_num) * $fenyePage->page_num + 1;
$index = $start;
if($fenyePage->pageNow > $fenyePage->page_num){
$navigation_bars .="<a href='$php_name?pageNow=".($start-1)."'> << </a>";
}
for(;$start < $fenyePage->pageCount && $start<$index + $fenyePage->page_num;$start++){
$navigation_bars .= "<a href='$php_name?pageNow=$start'>[$start]</a>";
}
$navigation_bars .="<a href='$php_name?pageNow=".($start+1)."'> << </a>";
//显示当前页和共有多少页
$navigation_bars .= "  当前页{$fenyePage->pageNow}/共{$fenyePage->pageCount}页";
$fenyePage->navigation_bars=$navigation_bars;
} //执行DML语句 更新 删除 添加
public function execute_dml($sql){
$b=mysql_query($sql,$this->conn);
if(!$b){
return 0;//失败
} else {
if(mysql_affected_rows($this->conn)){
return 1;//执行成功
}else{
return 2;//表示没有行发生变化
}
}
} //关闭连接的方法
public function close_connect(){
if($this->conn){
mysql_close($this->conn);
}
}
}
?>

8、fenyepage.class.php

<?php
class fenyepage{
public $pageSize; //每页显示的行数
public $pageNow; //当前页
public $pageCount; //共有多少页。计算得到
public $res_array;//显示数据,数据库获得
public $row_Count; //共有多少行,数据库获得
public $page_num; //翻页数
public $navigation_bars;//导航条
}
?>

下面展示的是一个主要的页面:



PHP自学之路---雇员管理系统(2)的更多相关文章

  1. PHP自学之路---雇员管理系统(1)

    前面已经介绍了Zend studio工具的使用以及软件开发的基本阶段,下面就是我们第一个练习,雇员管理系统,从设计到实现来简单介绍下: 开发环境: 服务器:基于Linux 2.618环境下配置PHP服 ...

  2. 【转】JAVA自学之路

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  3. 我的.NET自学之路

    我第一门语言接触的并不是.net,而是php刚学php感觉还好,但是一学到后面就有一点头晕乎乎的,我感觉没有一个好的编写php代码的编辑器.而且php是弱类型语言,感觉起来没有像c,java,c#这些 ...

  4. EMS-Demo 雇员管理系统演示

    做了一个小小的雇员管理系统,主要使用了JTable,然后比较得意的地方是实现了拼音搜索,感觉很高大上其实只要引入一个Jpinyin.jar就可以了(网上到处都有下载或者去我的git项目的lib中下载) ...

  5. [php笔记]项目开发五个阶段/雇员管理系统

    zend 公司,管理PHP版本的升级. 功能强大, 官方推荐. (开发一个PHP项目) 软件开发的五个阶段. 1.创建一个项目(工程)2.设置该项目的路径3.创建一个文件test.php ***使用Z ...

  6. 聊聊我的 Java 自学之路

    最近经常在知乎收到类似『没基础,java 如何自学』.『怎么才能掌握编程』等等问题,再加上发现高中同学也在自学.有感而发,讲讲我的自学之路. 1.1. 大学 高考没正常发挥,考入一所二流的学校,当时分 ...

  7. 一个「学渣」从零开始的Web前端自学之路

    从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的“丰富”. 最后的机缘巧合下,走上了前端开发之路,作为一个非计算机专业且低 ...

  8. 【我的前端自学之路】【HTML5】.html和.htm的区别

    以下为自学笔记内容,仅供参考. 转发请保留原文链接:https://www.cnblogs.com/it-dennis/p/10508171.html .htm 和 .html 的区别 .htm 和 ...

  9. 【转】Java自学之路——by马士兵

    作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟 ...

随机推荐

  1. XFtp中文乱码解决

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 一张图解决 异常处理汇总:http://www.cnblogs.com/duni ...

  2. Linux常用命令汇总-速查

    对Linux新手有用的20个命令 对中级Linux用户有用的20个命令 对Linux专家非常有用的20个命令 20个最受欢迎的Linux命令 20个有趣的Linux命令

  3. nodejs开发aspnet5项目

    结合nodejs开发aspnet5项目 1.安装kvm   官方教程地址:https://github.com/ligershark/Kulture 打开 powershell命令窗口,找不到可以在开 ...

  4. JavaScript中的单引号和双引号报错的解决方法

    在使用JavaScript显示消息或者传递字符数据的时候,经常会碰到数据中夹杂单引号(')或者双引号("),这种语句往往会造成JavaScript报错.对此一般采用/'或者/"的解 ...

  5. 还在等待漫长的iOS构建过程?来试试通过命令行的方式进行iOS应用快速构建和运行吧

    不必多言,Xcode慢得很是众所周知的了.更甚者是,我有时发觉自己太依赖于Cocoa Touch的自动完成功能了,这可是个天使和魔鬼的结合体! 故此我开始去寻觅一个替代的流程来通过命令行来实现我需要的 ...

  6. .net4.5的弱事件

    .net4.5的弱事件 没有伟大的愿望,就没有伟大的天才--Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 事件-我的讲法 老师常告诉我,事件是特殊的委托,为委托提供 ...

  7. 了解ASP.NET 5

    通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(1) 微软在开发ASP.NET 5(当时被称为ASP.NET vNext)是采用的代号为Project K,所以运行时被称为 ...

  8. Windows 8.1 store app 开发笔记

    原文:Windows 8.1 store app 开发笔记 零.简介 一切都要从博彦之星比赛说起.今年比赛的主题是使用Bing API(主要提到的有Bing Map API.Bing Translat ...

  9. 分享UI设计模型

    UI设计模型是可重用的界面设计解决方案,可以让开发人员少走弯路,节约不少开发时间.下面慧都小编跟大家分享6个很有用的UI设计模型资源,希望对你有用: 1.UI Patterns 由一个丹麦人开发的UI ...

  10. oracle存储过程代码覆盖率统计工具

    目前针对于高级语言如C++,JAVA,C#等工程都有相关的代码覆盖率统计工具,但是对于oracle存储过程或者数据库sql等方面的项目,代码覆盖率统计和扫描工具相对较少. 因此针对这种情况,设计了代码 ...