【預備知識】php
1、PHP訪問MySQL數據庫 html
一、鏈接到MySQL數據庫mysql
$conn=mysql_connect("localhost","root","") or die ("數據庫服務器鏈接失敗");sql
二、選擇數據庫數據庫
mysql_select_db("db_shop",$conn) or die("數據庫訪問錯誤"); 數組
三、執行SQL查詢語句服務器
mysql_query("set names gb2312"); //設置客戶端字符集爲gb2312cookie
$SQL="select * from tb_type";session
$result=mysql_query($SQL); //將SQL語句發送到數據庫執行並返回結果資源ide
四、逐行獲取數據
while($row=mysql_fetch_array($result)) //逐行獲取類別表數據
{
echo $row['typeid']; //輸出類別號
echo $row['typename']; //輸出類別名稱
echo "<br />";
}
五、統計查詢結果的記錄集數
echo $num=mysql_num_rows($result); //統計類別的數量
【例1】查詢商品類別
<?php
$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 "<br />";
while($row=mysql_fetch_array($result)) //逐行獲取類別表數據
{
echo $row['typeid']; //輸出類別號
echo $row['typename']; //輸出類別名稱
echo "<br />";
}
mysql_free_result($result);
mysql_close($conn)
?>
【例2】刪除某個商品類別
<?php
$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);
?>
2、MVC模式
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面 顯示分離的方法組織代碼。
Model(模型)表示應用程序核心(好比數據庫記錄列表)。
View(視圖)顯示數據(數據庫記錄)。
Controller(控制器)處理輸入(寫入數據庫記錄)。
3、圖
【任務實施】
1、ZendStdio安裝及建立項目
2、Apache創建虛擬目錄
3、SQLHelper.class.php封裝數據庫相關操做
<?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);
}
}
}
?>
4、管理員登陸與註銷實現
一、Admin.class.php
<?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;
}
}
?>
二、AdminService.class.php實現管理員身份驗證
<?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;
}
}
三、loginProcess獲取用戶信息,經過service訪問數據庫,驗證是否形式合法新用戶,返回用戶
<?php
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();
}
}
4、實現後臺管理頁
一、Manager.php
<?php
header("content-type:text/html;charset=utf-8");
session_start();
if(isset($_SESSION['name'])){
echo "歡迎".$_SESSION['name']."登錄";
echo "<br/><a href='login.php'>從新登錄";
echo "<h1>用戶管理</h1>";
echo "<a href='userList.php'>顯示用戶列表</a><br/>";
echo "<a href='userAdd.php'>添加用戶</a><br/>";
echo "<a href='loginProcess.php?action=exit'>註銷</a><br/>";
}else{
header("Location:login.php");
}
?>
二、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();
}
5、實現會員列表
一、自行編寫User.class.php
class User {
private $id;
private $name;
private $password;
private $email;
private $telephone;
}
二、UserService.class.php
<?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;
}
}
三、列表顯示會員信息
userList.php
<?php
header("content-type:text/html;charset=utf-8");
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"<tr><td>{$row['id']}</td><td>{$row['name']}</td><td>刪除</td><td>修改</td></tr>";
// }
// 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"會員信息表<br/>";
echo"<table border=1 width=600px>
<tr>
<th>id</th><th>name</th><th>刪除</th><th>修改</th></tr>";
foreach ($result as $row){
echo"<tr><td>{$row['id']}</td><td>{$row['name']}</td><td>刪除</td><td>修改</td></tr>";
//print_r($row['id']);
}
echo"</table>";
?>
6、刪除會員
一、userList.php修改部分
foreach ($result as $row){
echo"<tr><td>{$row['id']}</td><td> {$row['name']}</td><td><a href='userProcess.php?action=delete&id=$id'>刪除</a></td><td>修改< /td></tr>";
//print_r($row['id']);
}
二、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");
}
7、修改會員
一、userList.php修改部分
foreach ($result as $row){
echo"<tr><td>{$row['id']}</td><td> {$row['name']}</td><td><a href='userProcess.php?action=delete&id=$id'>刪除</a></td& gt;<td>修改< /td></tr>";
//print_r($row['id']);
}
二、updateUserUI界面部分
<?php
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);
}
?>
<body>
<p>修改用戶信息</p>
<form action="UserProcess.php" method="post">
<table>
<tr>
<td>用戶id</td>
<td><input type="text" name="id" readonly="readonly" value="<?php echo $User->getId();?>"/></td>
</tr>
<tr>
<td>用戶名</td>
<td><input type="text" name="name" value="<?php echo $User->getName();?>"/></td>
</tr>
<tr><td>密碼</td><td><input type="text" name="password" value=""/></td></tr>
<tr>
<td>郵箱</td>
<td><input type="text" name="email" value="<?php echo $User->getEmail();?>"/></td>
</tr>
<tr>
<td>電話</td>
<td><input type="text" name="telephone" value="<?php echo $User->getTelephone();?>"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="更改"><input type="reset" value="重寫"/></td>
</tr>
</table>
<input type="hidden" value="update" name="action"/>
</form>
</body>
三、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");
}
}
8、添加用戶信息部分(自主完成)