【预备知识】
一、PHP访问MySQL数据库
1、连接到MySQL数据库
$conn=mysql_connect("localhost","root","") or die ("数据库服务器连接失败");
2、选择数据库
mysql_select_db("db_shop",$conn) or die("数据库访问错误");
3、执行SQL查询语句
mysql_query("set names gb2312"); //设置客户端字符集为gb2312
$SQL="select * from tb_type";
$result=mysql_query($SQL); //将SQL语句发送到数据库执行并返回结果资源
4、逐行获取数据
while($row=mysql_fetch_array($result)) //逐行获取类别表数据
{
echo $row['typeid']; //输出类别号
echo $row['typename']; //输出类别名称
echo "
";
}
5、统计查询结果的记录集数
echo $num=mysql_num_rows($result); //统计类别的数量
【例1】查询商品类别
$conn=mysql_connect("localhost","root","") or die ("数据库服务器连接失败");
mysql_select_db("db_shopping",$conn) or die("数据库访问错误");
mysql_query("set names gb2312"); //设置客户端字符集为gb2312
$SQL="select * from tb_type";
$result=mysql_query($SQL); //将SQL语句发送到数据库执行并返回结果资源
echo $num=mysql_num_rows($result); //统计类别的数量
echo "
";
while($row=mysql_fetch_array($result)) //逐行获取类别表数据
{
echo $row['typeid']; //输出类别号
echo $row['typename']; //输出类别名称
echo "
";
}
mysql_free_result($result);
mysql_close($conn)
?>
【例2】删除某个商品类别
$conn=mysql_connect("localhost","root","") or die ("数据库服务器连接失败");
mysql_select_db("db_shop",$conn) or die("数据库访问错误");
mysql_query("set names gb2312"); //设置客户端字符集为gb2312
$SQL="delete from tb_type where id=3 ";
mysql_query($sql,$conn) or die(mysql_error());
if(mysql_affected_rows($conn)>0){
echo "删除成功";
}else{
echo "无符合条件记录";
}
mysql_close($conn);
?>
二、MVC模式
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面 显示分离的方法组织代码。
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。
三、图
【任务实施】
一、ZendStdio安装及创建项目
二、Apache建立虚拟目录
三、SQLHelper.class.php封装数据库相关操作
class SQLHelper{
private $conn;
private $host="localhost";
private $user="root";
private $pwd="";
private $db="db_shopping";
public function __construct(){
$this->conn=mysql_connect($this->host,$this->user,$this->pwd) or die(mysql_connect_error);
mysql_select_db($this->db);
}
public function execute_dql($sql){
$res=mysql_query($sql) or die(mysql_error());
return $res;
}
public function execute_dql2($sql){
//查询,返回数组值
$arr=array();
$result=mysql_query($sql,$this->conn) or die(mysql_error());
while($row=mysql_fetch_assoc($result)){
$arr[]=$row;
}
mysql_free_result($result);
return $arr;
}
public function executed_dml($sql){
$b=mysql_query($sql,$this->conn) or die(mysql_error());
if(!$b){
return 0; //不可操作
}else{
if(mysql_affected_rows($this->conn)>0){
return 1; //操作 成功
}else{
return 2; //可以操作,但无符合条件记录
}
}
}
public function close_connect(){
if(!empty($this->conn)){
mysql_close($this->conn);
}
}
}
?>
四、管理员登录与注销实现
1、Admin.class.php
class Admin {
private $id;
private $name;
private $password;
public function getId() {
return $this->id;
}
public function getName() {
return $this->name;
}
public function getPassword() {
return $this->password;
}
public function setId($id) {
$this->id = $id;
}
public function setName($name) {
$this->name = $name;
}
public function setPassword($password) {
$this->password = $password;
}
}
?>
2、AdminService.class.php实现管理员身份验证
require_once 'SQLHelper.class.php';
require_once 'Admin.class.php';
class AdminService {
public function checkAdmin($id,$password){
$sql="select password,name from admin where id=$id";
$name="";
$sqlHelper=new SQLHelper();
$result=$sqlHelper->execute_dql($sql);
if($row=mysql_fetch_assoc($result)){
if($password==$row['password']){
$name=$row['name'];
}
}
mysql_free_result($result);
$sqlHelper->close_connect();
return $name;
}
}
3、loginProcess获取用户信息,通过service访问数据库,验证是否形式合法新用户,返回用户
require_once 'SQLHelper.class.php';
require_once 'AdminService.class.php';
$action=$_GET['action'];
if("login"==$action){
$id=$_POST['id'];
$password=$_POST['password'];
$password=md5($password);
$service=new AdminService();
$name=$service->checkAdmin($id, $password);
echo $name;
if($name!=""){
header("Location:empManage.php?name=$name");
session_start();//启用session回话
$_SESSION['name']=$name;
header("Location:Manage.php");
exit();
}
else {
header("Location:login.php?errno=1");
exit();
}
}
四、实现后台管理页
1、Manager.php
header("content-type:text/html;charset=utf-8");
session_start();
if(isset($_SESSION['name'])){
echo "欢迎".$_SESSION['name']."登陆";
echo "
重新登陆";
echo "用户管理
";
echo "显示用户列表
";
echo "添加用户
";
echo "注销
";
}else{
header("Location:login.php");
}
?>
2、loginProcess注销管理员返回登录界面
if ("exit"==$action){
session_start();
$_SESSION=array();
if(isset($_COOKIE[session_name()])){
setcookie(session_name(),'',time()-3600);
}
session_destroy();
header("Location:login.php");
exit();
}
五、实现会员列表
1、自行编写User.class.php
class User {
private $id;
private $name;
private $password;
private $email;
private $telephone;
}
2、UserService.class.php
require_once 'SQLHelper.class.php';
require_once 'User.class.php';
class UserService{
public function getById($id){
$sql="select * from users where id=$id";
$sqlHelper=new SQLHelper();
$arr=$sqlHelper->execute_dql2($sql);
$user=new User();
$user->setId($arr[0]['id']);
$user->setName($arr[0]['name']);
$user->setPassword($arr[0]['password']);
$user->setEmail($arr[0]['email']);
$user->setTelephone($arr[0]['telephone']);
return $user;
}
public function deleteUser($id)
{
$sql="delete from users where id=$id";
$sqlHelper=new SQLHelper();
$b=$sqlHelper->executed_dml($sql);
return $b;
}
public function addUser($name,$password,$email,$telephone){
$sql="insert into users(name,password,email,telephone)values('$name','$password','$email','$telephone')";
$sqlHelper=new SQLHelper();
$b=$sqlHelper->executed_dml($sql);
return $b;
}
public function updateUser($id,$name,$password,$email,$telephone){
$sql="update users set name='$name',password='$password',email='$email',telephone='$telephone' where id=$id";
$sqlHelper=new SQLHelper();
$b=$sqlHelper->executed_dml($sql);
return $b;
}
}
3、列表显示会员信息
userList.php
header("content-type:text/html;charset=utf-8"); foreach ($result as $row){
require_once 'SQLHelper.class.php';
require_once 'UserService.class.php';
//方式1
/* $sql1="select id,name from users";
// $result=$sqlHelper->execute_dql($sql);
// while($row=mysql_fetch_assoc($result)){
// echo" ";{$row['id']} {$row['name']} 删除 修改
// }
// mysql_free_result($result);
// $sqlHelper->close_connect();
//MVC方式
$sql1="select id,name from users ";
$sqlHelper=new SQLHelper();
$result=$sqlHelper->excute_dql2($sql1);//二维数组
$sqlHelper->close_connect();
echo"会员信息表
";
echo"
";
"; id name 删除 修改
echo" ";{$row['id']} {$row['name']} 删除 修改
//print_r($row['id']);
}
echo"
?>
六、删除会员
1、userList.php修改部分
foreach ($result as $row){
echo" ";{$row['id']} {$row['name']} 删除 修改< /td>
//print_r($row['id']);
}
2、userProcess.php实现删除部分内容
if("delete"==$_GET['action']){
$id=$_GET['id'];
$userService=new userService();
$b=$userService->deleteUser($id);
if($b==1)
{
header("Location:ok.php");
}else{
header("Location:error.php");
}
七、修改会员
1、userList.php修改部分
foreach ($result as $row){
echo" ";{$row['id']} {$row['name']} 删除 修改< /td>
//print_r($row['id']);
}
2、updateUserUI界面部分
require_once 'User.class.php';
require_once 'UserService.class.php';
header("Content-type:text/html;charset=utf-8");
if(!empty($_GET['id'])){
$id=$_GET['id'];
$UserService=new UserService();
$User=$UserService->getById($id);
}
?>
修改用户信息
3、userProcess实现修改部分
if("update"==$_POST['action']){
$id=$_POST['id'];
$name=$_POST['name'];
$password=$_POST['password'];
$email=$_POST['email'];
$telephone=$_POST['telephone'];
//echo $email;
$userService=new userService();
$b=$userService->updateUser($id, $name, $password, $email, $telephone);
if($b==1)
{
header("Location:ok.php");
}else{
header("Location:error.php");
}
}
八、添加用户信息部分(自主完成)