PHP自学之路---雇员管理系统(1)
前面已经介绍了Zend studio工具的使用以及软件开发的基本阶段,下面就是我们第一个练习,雇员管理系统,从设计到实现来简单介绍下:
开发环境:
服务器:基于Linux 2.618环境下配置PHP服务器
Ide : Zend studio
下面是基本的框架图:
1、首先设计数据库
设计数据库
Admin
Create table admin(
Id int primary key,
Name varchar(32) not null,
Password varchar(128) not null
);
Emp 雇员表
Create table emp(
Id int primary key auto_increment,
Name varchar(64) not null,
Grade tinyint,
Email varchar(64) not null,
Salary float
)
添加用户
insert into admin(id,name,password) value('124','admin',md5('admin')); insert into emp(name,grade,email,salary) value('admin',’80’,’3789131@163.com’,10);
2、代码实现
<!-- login.php --> <html>
<head>
<meta http-equiv="content-tpe" content="text/html;charset-utf-8"/> </head>
<h1>管理员登陆系统</h1>
<form action="loginProcess.php" method="post">
<table>
<tr><td>用户ID:</td><td><input type="text" name="id"/></td></tr>
<tr><td>密 码:</td><td><input type="text" name="password"/></td></tr>
<tr><td><input type="submit" value="用户登录"/></td>
<td><input type="reset" value="重新填写"/></td></tr>
</table>
</form>
<?php
if(!empty($_GET['errno'])){
$errno=$_GET['errno'];
if($errno==1){
echo "</br><font color='black' size='3px'>你的用户名或者密码输入错误 </font> ";
}else{
echo "hello";
}
}
?>
</html>
<!-- loginProcess.php -->
<?php
/**
*
* @author jsh
* @version
*/
//接受用户数据
$id=$_POST['id'];
$password=$_POST['password']; //到数据库进行验证
//链接数据库
$mysql_con=mysql_connect("192.168.1.110:3306","root","");
if(!$mysql_con){
die("connect error");
}
//选择数据库
mysql_select_db("manage",$mysql_con); //验证
$sql="select * from admin where id=$id";
$res=mysql_query($sql,$mysql_con); if(($row = mysql_fetch_assoc($res)) != ""){
if(md5($password) == $row['Password']){
$name = $row['Name'];
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();
}
} else {
header("Location:https://192.168.1.110/myphp/manage/login.php?errno=1");
// //如果登陆不成 功,需要提示对话框显示用户名或者密码错误
exit();
}
mysql_free_result($res); // //简单验证
// if($id == "jsh" && $password == "1234567a"){
// header("Location:https://192.168.1.110/myphp/manage/empManage.php");
// exit();
// }else{
// //非法用户,跳转到登陆页面
// header("Location:https://192.168.1.110/myphp/manage/login.php?errno=1");
// //如果登陆不成 功,需要提示对话框显示用户名或者密码错误
// exit();
// } ?>
<!-- empManage.php -->
<html>
<head>
<meta http-equiv="content-tpe" content="text/html;charset-utf-8"/>
</head> <?php
$name=$_GET['name'];
echo "欢迎".$name."进入";
echo " <a href='login.php'>返回登陆界面</a></br>"
?>
<h1>主界面</h1>
<a href='empList.php'>管理用户</a></br>
<a href=''>添加用户</a></br>
<a href=''>查询用户</a></br>
<a href=''>退出系统</a></br>
</html>
下面是关于分页技术的介绍:
在分页中有几个变量是必须的:
$pageNow :显示第几页:用户输入
$pageCount:共有几页[]
$rowCount:共有多少条记录[数据库获取]
$pagesize:每页显示几条记录[人为定义]
计算pageCount 算法
<?php
$pageCount=ceil($rowCount/$pagesize);
?>
select * from emp limit 1,3;
查找有多少行SQL语句
Select count(Id) from emp;
<!-- emplist.php -->
<html>
<head>
<meta http-equiv="content-tpe" content="text/html;charset-utf-8"/>
<title>雇员管理列表</title>
</head> <?php
$mysql_con=mysql_connect("192.168.1.110:3306","root","");
if(!$mysql_con){
die("connect error");
}
//选择数据库
mysql_select_db("manage",$mysql_con); /*
$pageNow :显示第几页:用户输入
$pageCount:共有几页[]
$rowCount:共有多少条记录[数据库获取]
$pagesize:每页显示几条记录[人为定义]
*/ $pagesize = 3;
//获取共有多少记录
$sql="select count(Id) from emp";
$res=mysql_query($sql,$mysql_con);
if($row=mysql_fetch_array($res)){
$rowCount=$row[0];
}
mysql_free_result($res);
$pageCount = ceil($rowCount/$pagesize);
if(!empty($_GET['pageNow'])){
$pageNow = $_GET['pageNow'];
} else {
$pageNow = 1;
} //验证'
$sql="select * from emp limit ".($pageNow-1)*$pagesize.",$pagesize";
$res=mysql_query($sql,$mysql_con);
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>"; while(($row=mysql_fetch_assoc($res)) != ""){
echo "<tr><th>{$row['Id']}</th><th>{$row['Name']}</th><th>{$row['Grade']}</th>".
"<th>{$row['Email']}</th><th>{$row['Salary']}</th><th><a href=''>删除用户</a></th>".
"<th><a href=''>修改用户</a></th></tr>";
}
echo "</table>";
/*
//打印出页码的链接
for($i=1;$i<=$pageCount;$i++){
echo "<a href='empList.php?pageNow=$i'><$i></a>";
}
*/
//显示上一页和下一页
if($pageNow>1){
$prepage = $pageNow - 1;
echo "<a href='empList.php?pageNow=$prepage'>上一页</a>";
}
if($pageNow<$pageCount){
$nextpage = $pageNow + 1;
echo "<a href='empList.php?pageNow=$nextpage'>下一页</a>";
}
//显示当前页和共有多少页
echo " 当前页{$pageNow}/共{$pageCount}页"; //指定跳转到某页
?>
<form action="empList.php" method="get"> 跳转到:<input type="text" name="pageNow"/>
<input type="submit" value="GO"/>
</form> <?php
mysql_free_result($res);
?> </html>
这里我们必须提到,在软件开发中有几个重要的开发模式
1、Model1 模式
2、分层模式(界面、业务逻辑分离)
3、Mvc 模式
Model1模式最重要的特点就是没有分层的概念,也就是说界面显示和业务逻辑的处理放在一个文件中来完成。
缺点:
1)、表现层和业务逻辑层混合在一起(乱!)
2)、在开发中,不利于多人的协同开发
3)、不利于后期的维护
优点:
简单、开发速度比较快
比较适合开发小的项目
分层模式 基本概念是:把界面和业务分层-〉结构清晰,利于分工开发
Mvc模式,基本概念:强制把数据的输入,数据的处理,数据的显示
下面章节将介绍 分层模式及Mvc模式实现!
PHP自学之路---雇员管理系统(1)的更多相关文章
- PHP自学之路---雇员管理系统(2)
这个章节将讲解分层模式对雇员管理系统的系统,首先看下基本的流程图设计: 下面是具体的代码: 1.login.php(参照上节) 2.loginProcess.php <?php /** * * ...
- 【转】JAVA自学之路
JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...
- 我的.NET自学之路
我第一门语言接触的并不是.net,而是php刚学php感觉还好,但是一学到后面就有一点头晕乎乎的,我感觉没有一个好的编写php代码的编辑器.而且php是弱类型语言,感觉起来没有像c,java,c#这些 ...
- EMS-Demo 雇员管理系统演示
做了一个小小的雇员管理系统,主要使用了JTable,然后比较得意的地方是实现了拼音搜索,感觉很高大上其实只要引入一个Jpinyin.jar就可以了(网上到处都有下载或者去我的git项目的lib中下载) ...
- [php笔记]项目开发五个阶段/雇员管理系统
zend 公司,管理PHP版本的升级. 功能强大, 官方推荐. (开发一个PHP项目) 软件开发的五个阶段. 1.创建一个项目(工程)2.设置该项目的路径3.创建一个文件test.php ***使用Z ...
- 聊聊我的 Java 自学之路
最近经常在知乎收到类似『没基础,java 如何自学』.『怎么才能掌握编程』等等问题,再加上发现高中同学也在自学.有感而发,讲讲我的自学之路. 1.1. 大学 高考没正常发挥,考入一所二流的学校,当时分 ...
- 一个「学渣」从零开始的Web前端自学之路
从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的“丰富”. 最后的机缘巧合下,走上了前端开发之路,作为一个非计算机专业且低 ...
- 【我的前端自学之路】【HTML5】.html和.htm的区别
以下为自学笔记内容,仅供参考. 转发请保留原文链接:https://www.cnblogs.com/it-dennis/p/10508171.html .htm 和 .html 的区别 .htm 和 ...
- 【转】Java自学之路——by马士兵
作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟 ...
随机推荐
- centos7联网
一般centos安装(在虚拟机上安装)完成后需要自己配置服务,下面我就讲下如何配置 配置联网步骤 首先,打开虚拟机的两个服务,右击我的电脑-->管理--->找到服务-->右击启动 两 ...
- AdvStringGrid 删除数据
unit Unit6; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- AdvStringGrid 列宽度、列移动、行高度、自动调节
那么有没有办法,让客户自己去调整列的宽度呢? 那么有没有办法 让列宽度.行高度 随着内容而自动变换呢: unit Unit5; interface uses Winapi.Windows, Winap ...
- GridLayout 计算器
<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android=" ...
- gluster学习(一)
2)Bricks • Brick是一个节点和一个导出目录的集合,e.g. node1:/brick1 • Brick是底层的RAID或磁盘经XFS或ext4文件系统格式化而来,所以继承了文件系统的限制 ...
- Python数据分析之pandas
Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容:1.数据结构简介:DataFrame和Series2.数据索引index3.利用pandas查询数据4.利 ...
- Java反射机制的缺点
来自官方指南(Tutorial):http://docs.oracle.com/javase/tutorial/reflect/index.html 反射的用途 Uses of ReflectionR ...
- Python面向对象中super用法与MRO机制
1. 引言 最近在研究django rest_framework的源码,老是遇到super,搞得一团蒙,多番查看各路大神博客,总算明白了一点,今天做一点总结. 2. 为什么要用super 1)让代码维 ...
- odoo基础数据加载
odoo 基础数据加载 这里介绍的odoo基础数据加载分两种方式,一种是演示数据加载,一种是默认数据加载,下面就是详细介绍 首先,当然是创建一个date文件夹 项目目录,右键自定义一个文件夹 XML数 ...
- [leetcode DP]91. Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...