您好,登錄后才能下訂單哦!
這篇文章主要講解了“php怎么實現簡單的雇員管理系統”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“php怎么實現簡單的雇員管理系統”吧!
這是一個簡單的php練習小項目,因為比較簡單所以就沒有用Smarty模板去把這個項目徹底的輸入,處理,輸出分離,只是簡單的用MVC的設計模式去寫的。這個項目主要是為了練習Cookie和Session的使用。
數據庫用的是MySQL,建了一個empmanage的數據庫,里面有兩張表。如圖:
表的結構如圖:
這是登陸界面,因為主要想練習后臺相關知識,所以前臺頁面寫的比較簡單。實際上是先寫的index.php,里面就只是一個跳轉。
index.php
<?php header("Location:login.php"); ?>
login.php
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>emp_system</title> </head> <?php require_once 'common.php';?> <h2>emp login</h2> <form action="loginProcess.php" method="post"> 用戶名<input type="text" name="username" value="<?php echo getCookie("username")?>"/><br/> 密碼 <input type="password" name="password"/><br/> sava cookie<input type="checkbox" name="cookie"/><br/> <input type="submit" value="登陸"/> </form> <?php if(!empty($_GET['errNo'])){ $errNo=$_GET['errNo']; echo "<br/><font color='red'>輸入的密碼或用戶名錯誤,錯誤信息</font>".$errNo; } ?> </html>
login.php中require_once的common.php
<?php function getLastTime(){ date_default_timezone_set ( 'UTC' ); if(!empty($_COOKIE)){ echo "上次登錄時間:".$_COOKIE['last_visit_time']; setcookie("last_visit_time",date("Y-m-d H:i:s"),time()+24*3600); }else{ echo "第一次登錄"; setcookie("last_visit_time",date("Y-m-d H:i:s"),time()+24*3600); } } function getCookie($key){ if(!empty($_COOKIE[$key])){ return $_COOKIE[$key]; }else{ return ""; } } function checkUserLegal(){ session_start(); if(empty($_SESSION['id'])){ header("Location:login.php?errNo=1"); } } ?>
login.php中表單提交到loginProcess.php去。
<?php require_once 'adminService.class.php'; if(!empty($_POST['cookie'])){ if(!empty($_POST['username'])){ $username=$_POST['username']; setcookie("username","$username",time()+300); } if(!empty($_POST['password'])){ $password=$_POST['password']; setcookie("password","$password",time()+300); } }else{ if(!empty($_POST['username'])){ $username=$_POST['username']; } if(!empty($_POST['password'])){ $password=$_POST['password']; } } $adminService=new adminService(); if($id=$adminService->checkUser($username, $password)){ //合法 session_start(); $_SESSION['id']=$id; header("Location:Main.php?id=$id"); exit(); }else{ //非法 header("Location:login.php?errNo=2"); exit(); } ?>
loginProcess中require_once的adminService.class.php。
<?php require_once 'SqlHelper.class.php'; class adminService{ //驗證用戶是否合法 public function checkUser($username,$password){ $sqlHelper=new SqlHelper(); $sql="select password,id from admin where name='".$username."'"; $res=$sqlHelper->execute_dql($sql); if($row=mysql_fetch_assoc($res)){ if($row['password']==md5($password)){ $id=$row['id']; return $id; }else{ return null; } }else{ return null; } //釋放資源 mysql_free_result($res); //關閉連接 $sqlHelper->close_connent(); } } ?>
adminService.class.php中require_once的SqlHelper.class.php。
<?php class SqlHelper{ public $conn; public $dbname="empmanage"; public $host="localhost"; public $username="root"; public $password="root"; public function __construct(){ $conn=mysql_connect($this->host,$this->username,$this->password); if(!$conn){ die("connect error".mysql_errno()); } mysql_select_db($this->dbname) or die(mysql_errno()); //mysql_query("set names utf8",$this->conn); } //dql public function execute_dql($sql){ $res=mysql_query($sql) or die(mysql_error()); return $res; } //dql2 返回一格數組 可以直接關閉結果集 public function execute_dql2($sql){ $arr=array(); $i=0; $res=mysql_query($sql) or die(mysql_error()); while($row=mysql_fetch_assoc($res)){ $arr[$i++]=$row; } mysql_free_result($res); return $arr; } //分頁查詢 public function execute_dql_fenye($sql1,$sql2,$fenyePage){ $res=mysql_query($sql1) or die(mysql_error()); $arr=array(); while($row=mysql_fetch_assoc($res)){ $arr[]=$row; } mysql_free_result($res); $fenyePage->res_array=$arr; $res2=mysql_query($sql2) or die(mysql_error()); if($row=mysql_fetch_row($res2)){ $fenyePage->rowCount=$row[0]; $fenyePage->pageCount=ceil($row[0]/$fenyePage->pageSize); } mysql_free_result($res2); $daohangtiao=""; if($fenyePage->pageNow>1){ $prePage=$fenyePage->pageNow-1; $fenyePage->daohangtiao= "<a href='{$fenyePage->gotoUrl}?pageNow=$prePage'>上一頁</a>"; } if($fenyePage->pageNow<$fenyePage->pageCount){ $nextPage=$fenyePage->pageNow+1; $fenyePage->daohangtiao.= "<a href='{$fenyePage->gotoUrl}?pageNow=$nextPage'>下一頁</a>"; } //用for打印10頁超鏈接 $start=floor(($fenyePage->pageNow-1)/10)*10+1; $index=$start; if($fenyePage->pageNow>10){ $fenyePage->daohangtiao.= " <a href='{$fenyePage->gotoUrl}?pageNow=".($start-1)."'><<</a>"; } for(;$start<$index+10;$start++){ $fenyePage->daohangtiao.= "<a href='{$fenyePage->gotoUrl}?pageNow=$start'>[$start]</a>"; } $fenyePage->daohangtiao.= " <a href='{$fenyePage->gotoUrl}?pageNow=$start'>>></a>"; $fenyePage->daohangtiao.= " 當前{$fenyePage->pageNow}頁/共{$fenyePage->pageCount}頁"; } //dml public function execute_dml($sql){ $res=mysql_query($sql) or die(mysql_error()); if(!$res){ return 0;//沒有用戶匹配 } if(mysql_affected_rows($this->conn)>0){ return 1;//ok }else{ return 2;//沒有行受到影響 } } //關閉連接 public function close_connent(){ if(!empty($this->conn)){ mysql_close($this->conn); } } } ?>
驗證是合法用戶跳轉到Main.php,非法跳轉到login.php并把errNo帶回去并用紅色輸出。如圖:
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <?php require_once 'common.php'; checkUserLegal(); $id=$_REQUEST['id']; echo "歡迎".$id."登陸"; // setcookie("last_visit_time","",time()-100); getLastTime(); ?> <h2>Main View</h2> <a href="empList.php">管理用戶</a><br/> <a href="addEmp.php">添加用戶</a><br/> <a href="selectEmp.php">查詢用戶</a><br/> </html>
在Main頁面你可以選擇管理用戶,添加用戶,查詢用戶(用戶可以理解為雇員)。那么點擊查詢用戶后會跳轉到selectEmp.php去。
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <h2>查找用戶</h2> <form action="empProcess.php" method="post"> 輸入id號:<input type="text" name="id"/> <input type="hidden" name="flag" value="selectEmp"/> <input type="submit" value="go"/> </form> </html>
在selectEmp.php中的表單會跳轉到empProcess.php去。
<?php require_once 'empService.class.php'; require_once 'emp.class.php'; $empService=new empService(); if(!empty($_REQUEST['flag'])){ if($_REQUEST['flag']=="del"){ $id=$_REQUEST['id']; if($empService->deleteById($id)==1){ header("Location: ok.php"); exit(); }else{ header("Location: err.php"); exit(); } }else if($_REQUEST['flag']=="addEmp"){ $name=$_REQUEST['name']; $grade=$_REQUEST['grade']; $email=$_REQUEST['email']; $salary=$_REQUEST['salary']; if($empService->addEmp($name, $grade, $email, $salary)==1){ header("Location: ok.php"); exit(); }else{ header("Location: err.php"); exit(); } }else if($_REQUEST['flag']=="selectEmp"){ $id=$_REQUEST['id']; if($res=$empService->selectEmp($id)){ echo "id{$res[0]['id']} name{$res[0]['name']} grade{$res[0]['grade']} email{$res[0]['email']} salary{$res[0]['salary']}"; } }else if($_REQUEST['flag']=="updataEmp"){ $id=$_REQUEST['id']; $name=$_REQUEST['name']; $grade=$_REQUEST['grade']; $email=$_REQUEST['email']; $salary=$_REQUEST['salary']; if($empService->updataEmp($id, $name, $grade, $email, $salary)==1){ header("Location: ok.php"); exit(); }else{ header("Location: err.php"); exit(); } } } ?>
這其中require_once的empService.class.php和emp.class.php。
<?php require_once 'SqlHelper.class.php'; class empService{ //計算出$PageCount public function getPageCount($pageSize){ $sqlHelper=new SqlHelper(); $sql="select count(id) from emp"; $res=$sqlHelper->execute_dql($sql); if($row=mysql_fetch_row($res)){ $rowCount=$row[0]; } $pageCount=ceil($rowCount/$pageSize); mysql_free_result($res); $sqlHelper->close_connent(); return $pageCount; } //取出結果集 public function getRes($pageNow,$pageSize){ $sqlHelper=new SqlHelper(); $sql="select id,name,grade,email,salary from emp limit ".($pageNow-1)*$pageSize.",$pageSize"; $res=$sqlHelper->execute_dql2($sql); $sqlHelper->close_connent(); return $res; } //分頁 public function getFenyePage($fenyePage){ $sqlHelper=new SqlHelper(); $sql1="select id,name,grade,email,salary from emp limit ".($fenyePage->pageNow-1)*$fenyePage->pageSize.",$fenyePage->pageSize"; $sql2="select count(id) from emp"; $sqlHelper->execute_dql_fenye($sql1, $sql2, $fenyePage); $sqlHelper->close_connent(); } //刪除用戶 public function deleteById($id){ $sqlHelper=new SqlHelper(); $sql="delete from emp where id=$id"; return $sqlHelper->execute_dml($sql) or die(mysql_error()); $sqlHelper->close_connent(); } //添加用戶 public function addEmp($name,$grade,$email,$salary){ $sqlHelper=new SqlHelper(); $sql="insert into emp(name,grade,email,salary) values ('$name','$grade','$email','$salary')"; return $sqlHelper->execute_dml($sql) or die(mysql_error()); $sqlHelper->close_connent(); } //查詢用戶 public function selectEmp($id){ $sqlHelper=new SqlHelper(); $sql="select * from emp where id=$id"; $res=$sqlHelper->execute_dql2($sql) or die(mysql_error()); $sqlHelper->close_connent(); return $res; } //修改用戶 public function updataEmp($id,$name,$grade,$email,$salary){ $sqlHelper=new SqlHelper(); $sql="update emp set name='$name',grade=$grade,email='$email',salary=$salary where id=$id"; return $sqlHelper->execute_dml($sql) or die(mysql_error()); $sqlHelper->close_connent(); } } ?>
<?php class emp{ public $res_arr_emp; } ?>
驗證后若該用戶存在輸出該用戶的詳細信息,如id name grade email salary。這是查詢,因為做的比較簡單,所以沒有寫個超鏈接讓它返回上一層。
若你在Main界面點擊的是添加用戶,則會跳轉到addEmp.php。
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <h2>添加用戶</h2> <form action="empProcess.php" method="post"> <table> <tr><td>name<td><td><input type="text" name="name"/><td></tr> <tr><td>grade(tinyint)<td><td><input type="text" name="grade"/><td></tr> <tr><td>email<td><td><input type="text" name="email"/><td></tr> <tr><td>salary(int)<td><td><input type="text" name="salary"/><td></tr> <tr><td><input type="submit" value="go"><td><td><input type="reset" value="reset"/><td></tr> <tr><input type="hidden" name="flag" value="addEmp"></tr> </table> </form> </html>
為了簡單沒有用js正則表達式去對表單中所輸入的內容進行驗證是否符合格式。輸入完表單后會跳轉到empProcess.php去驗證。如果添加成功會跳轉到ok.php,否則會跳轉到err.php。
<?php header("Content-Type:text/html;charset=utf-8"); echo "操作成功"; echo "<a href=empList.php>返回上一級<a>"; ?>
<?php header("Content-Type:text/html;charset=utf-8"); echo "操作失敗<br/>"; echo "<a href=empList.php>返回上一級<a>"; ?>
若在Main頁面點擊管理用戶則會跳轉到empList.php。
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <?php require_once 'empService.class.php'; require_once 'FenyePage.class.php'; require_once 'common.php'; checkUserLegal(); $fenyePage=new FenyePage(); //分頁 $fenyePage->pageNow=1;//顯示第幾頁 用戶輸入 不停變化 if(!empty($_GET['pageNow'])){ $fenyePage->pageNow=$_GET['pageNow']; } $fenyePage->pageCount=0;//共幾頁 需要$rowCount計算 $fenyePage->pageSize=5;//一頁顯示多少條記錄 $fenyePage->rowCount=0;//數據庫中獲取 共有幾條記錄 $fenyePage->gotoUrl="empList.php";//要跳轉的頁面 $empService=new empService(); $empService->getFenyePage($fenyePage); echo "<table border='1px' >"; echo "<tr><th>id</th><th>name</th><th>grade</th><th>email</th><th>salary</th><th><a href='#'>刪除用戶</a></th><th><a href='#'>修改用戶</a></th></tr>"; for($i=0;$i<count($fenyePage->res_array);$i++){ $row=$fenyePage->res_array[$i]; echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td><td>{$row['grade']}</td><td>{$row['email']}</td><td>{$row['salary']}</td><td><a href='empProcess.php?flag=del&id={$row['id']}'>刪除用戶</a></td><td><a href='updataEmp.php?flag=updataEmp&id={$row['id']}&name={$row['name']}&grade={$row['grade']}&email={$row['email']}&salary={$row['salary']}'>修改用戶</a></td></tr>"; } echo "<table>"; //打印導航條 echo $fenyePage->daohangtiao; ?> </html>
其中require_once的FenyePage.class.php。
<?php class FenyePage{ public $pageNow=1;//默認打開時第一頁 public $pageSize; public $pageCount; public $rowCount; public $res_array; public $daohangtiao;//導航條 public $gotoUrl;//要跳轉的頁面 } ?>
點擊修改用戶會跳轉到updataEmp.php。
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <h2>修改用戶</h2> <?php if($_REQUEST['flag']=="updataEmp"){ $id=$_REQUEST['id']; $name=$_REQUEST['name']; $grade=$_REQUEST['grade']; $email=$_REQUEST['email']; $salary=$_REQUEST['salary']; } ?> <form action="empProcess.php" method="post"> <table> <tr><td>id<td><td><input readonly="readonly" type="text" name="id" value="<?php echo $id;?>"/><td></tr> <tr><td>name<td><td><input type="text" name="name" value="<?php echo $name;?>"/><td></tr> <tr><td>grade(tinyint)<td><td><input type="text" name="grade" value="<?php echo $grade;?>"/><td></tr> <tr><td>email<td><td><input type="text" name="email" value="<?php echo $email;?>"/><td></tr> <tr><td>salary(int)<td><td><input type="text" name="salary" value="<?php echo $salary;?>"/><td></tr> <tr><td><input type="submit" value="go"><td><td><input type="reset" value="reset"/><td></tr> <tr><input type="hidden" name="flag" value="updataEmp"></tr> </table> </form> </html>
感謝各位的閱讀,以上就是“php怎么實現簡單的雇員管理系統”的內容了,經過本文的學習后,相信大家對php怎么實現簡單的雇員管理系統這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。