PHP基礎示例:商品信息管理系統v1.1,信息管理系統v1.1
實現目標:使用php和mysql寫一個商品信息管理系統,並帶有購物車功能
一、創建數據庫和表
1.創建數據庫和表:demodb
2.創建表格:goods
字段:商品編號,商品名稱,商品類型,商品圖片,單價,商品描述,庫存量,添加時間
二、創建php文件編寫代碼(以下為要創建的php文件及其用途)
add.php 商品添加頁面
edit.php 商品信息編輯表單頁
index.php 商品信息浏覽頁
action.php 執行商品信息添加和修改及刪除等操作處理
dbconfig.php 公共配置文件,數據庫連接配置信息
menu.php 網站公共導航欄
uploads/ 上傳圖片的存放目錄
function.php 公共函數庫文件:圖片信息的上傳,等比縮放等處理函數
addCart.php 添加購物車信息的操作(向SESSION放入要購買的信息)
myCart.php 實現了購物車信息的浏覽操作,並且實現商品信息的統計(小計和總價)
clearCart.php 實現了購物車信息的單個商品刪除或清空購物車操作
updateCart.php 修改購物車中商品的數量,防止過小約束
各php文件關系圖示:

好,那下面是代碼部分:
首先是建表語句:

![]()
1 create database newsdb;//創建庫語句
2
3 create table goods (
4 id int(10) unsigned NOT NULL AUTO_INCREMENT,
5 name varchar(64) NOT NULL,
6 typeid int(10) unsigned NOT NULL,
7 price double(6,2) unsigned NOT NULL,
8 total int(10) unsigned NOT NULL,
9 pic varchar(32) NOT NULL,
10 note text,
11 addtime int(10) unsigned NOT NULL,
12 PRIMARY KEY (`id`)
13 ) //創建表語句
建表語句
以下為各php文件代碼,需要的朋友可直接將各代碼復制並放到同一目錄下即可,還要在同目錄下創建uplaods文件夾存放上傳圖片

![]()
1 <html>
2 <head>
3 <title>商品信息管理</title>
4 </head>
5 <body>
6 <center>
7 <?php include("menu.php");//導入導航欄 ?>
8 <h3>發布商品信息</h3>
9 <form action="action.php?action=add" enctype="multipart/form-data" method="post">
10 <table border="0" width="300">
11 <tr>
12 <td align="right">名稱:</td>
13 <td><input type="text" name="name"/></td>
14 </tr>
15 <tr>
16 <td align="right">類型:</td>
17 <td>
18 <select name="typeid">
19 <?php
20 include("dbconfig.php");
21 foreach($typelist as $k=>$v)
22 {
23 echo "<option value='{$k}'>{$v}</option>";
24 }
25 ?>
26 </select>
27 </td>
28 </tr>
29 <tr>
30 <td align="right">單價:</td>
31 <td><input type="text" name="price"/></td>
32 </tr>
33 <tr>
34 <td align="right">庫存:</td>
35 <td><input type="text" name="total"/></td>
36 </tr>
37 <tr>
38 <td align="right">圖片:</td>
39 <td><input type="file" name="pic"/></td>
40 </tr>
41 <tr>
42 <td align="right" valign="top">描述:</td>
43 <td><textarea rows="5" cols="20" name="note"></textarea></td>
44 </tr>
45 <tr>
46 <td colspan="2" align="center">
47 <input type="submit" value="添加"/>
48 <input type="reset" value="重置"/>
49 </td>
50 </tr>
51 </table>
52 </form>
53 </center>
54 </body>
55 </html>
add.php

![]()
1 <?php
2 //執行商品信息的增、刪、改的操作
3
4 //一、導入配置文件和函數庫文件
5 require("dbconfig.php");
6 require("function.php");
7 //二、連接MySQL,選擇數據庫
8 $link = mysql_connect(HOST,USER,PASS) or die("數據庫連接失敗");
9 mysql_select_db(DBNAME,$link);
10
11
12 //三、獲取action參數的值,並做對應的操作
13 switch($_GET["action"])
14 {
15 case "add": //添加
16 //1.獲取添加信息
17 $name = $_POST["name"];
18 $typeid = $_POST["typeid"];
19 $price = $_POST["price"];
20 $total = $_POST["total"];
21 $note = $_POST["note"];
22 $addtime = time();
23 //2.驗證()省略
24 if(empty($name))
25 {
26 die("商品名稱必須有值");
27 }
28 //3.執行圖片上傳
29 $upinfo = uploadFile("pic","./uploads/");
30 if($upinfo["error"]===false)
31 {
32 die("圖片信息上傳失敗:".$upinfo["info"]);
33 }else
34 {
35 //上傳成功
36 $pic = $upinfo["info"];//獲取上傳成功的圖片名
37
38 }
39 //4.執行圖片縮放
40 imageUpdateSize('./uploads/'.$pic,50,50);
41 //5.拼裝sql語句,並執行添加
42 $sql = "insert into goods values(null,'{$name}','{$typeid}',{$price},{$total},'{$pic}','{$note}',{$addtime})";
43 mysql_query($sql,$link);
44 //6.判斷並輸出結果
45 if(mysql_insert_id($link)>0)
46 {
47 echo "商品發布成功";
48 }else
49 {
50 echo "商品發布失敗";
51 }
52 echo "<br> <a href='index.php'>查看商品信息<a>";
53
54 break;
55 case "del": //刪除
56 //獲取要刪除的id號並拼裝刪除sql,執行
57 $sql = "delete from goods where id={$_GET['id']}";
58
59 mysql_query($sql,$link);
60 //執行圖片刪除
61 if(mysql_affected_rows($link)>0)
62 {
63 @unlink("./uploads/".$_GET['picname']);
64 @unlink("./uploads/s_".$_GET['picname']);
65 }
66 //跳轉到浏覽界面
67 header("Location:index.php");
68 break;
69
70 case "update": //修改
71 //1.獲取要修改的信息
72 $name = $_POST["name"];
73 $typeid = $_POST["typeid"];
74 $price = $_POST["price"];
75 $total = $_POST["total"];
76 $note = $_POST["note"];
77 $id = $_POST['id'];
78 $pic = $_POST['oldpic'];
79 //2.數據驗證
80 if(empty($name))
81 {
82 die("商品名稱必須有值");
83 }
84 //3.判斷有無圖片上傳
85 if($_FILES['pic']['error']!=4)
86 {
87 //執行上傳
88 $upinfo = uploadFile("pic","./uploads/");
89 if($upinfo["error"]===false)
90 {
91 die("圖片信息上傳失敗:".$upinfo["info"]);
92 }else
93 {
94 //上傳成功
95 $pic = $upinfo["info"];//獲取上傳成功的圖片名
96 //4.有圖片上傳執行縮放
97 imageUpdateSize('./uploads/'.$pic,50,50);
98 }
99 }
100
101
102 //5.執行修改
103 $sql = "update goods set name='{$name}',typeid={$typeid},price={$price},total={$total},note='{$note}',pic='{$pic}' where id={$id}";
104 mysql_query($sql,$link);
105 //6.判斷是否修改成功
106 if(mysql_affected_rows($link)>0)
107 {
108 if($_FILES['pic']['error']!=4)
109 {
110 //若有圖片上傳,就刪除老圖片
111 @unlink("./uploads/".$_POST['oldpic']);
112 @unlink("./uploads/s_".$_POST['oldpic']);
113 }
114 echo "修改成功";
115 }else
116 {
117 echo "修改失敗".mysql_error();
118 }
119 echo "<br> <a href='index.php'>查看商品信息<a>";
120 break;
121 default:
122 echo "錯誤";break;
123
124 }
125 //四、關閉數據庫
126 mysql_close($link);
action.php

![]()
1 <?php
2 //公共信息配置文件
3
4 //數據庫信息配置
5 define("HOST","localhost");//主機名
6 define("USER","root"); //用戶名
7 define("PASS","root"); //密碼
8 define("DBNAME","demodb"); //數據庫名
9
10 //商品類型列表信息
11 $typelist=array(1=>"服裝",2=>"數碼",3=>"食品");
12
13
14 ?>
dbconfig.php

![]()
1 <html>
2 <head>
3 <title>商品信息管理</title>
4 </head>
5 <body>
6 <center>
7 <?php include("menu.php");//導入導航欄 ?>
8 <h3>浏覽商品信息<h3>
9
10 <table border="1" width="700">
11 <tr>
12 <th>商品編號</th>
13 <th>商品名稱</th>
14 <th>商品圖片</th>
15 <th>單價</th>
16 <th>庫存量</th>
17 <th>添加時間</th>
18 <th>操作</th>
19 </tr>
20 <?php
21 //從數據庫中讀取信息並輸出到浏覽器表格中
22 //1.導入配置文件
23 require("dbconfig.php");
24 //2.連接數據庫,並選擇數據庫
25 $link = @mysql_connect(HOST,USER,PASS) or die("數據庫連接失敗");
26 mysql_select_db(DBNAME,$link);
27 //3.執行商品信息查詢
28 $sql="select * from goods";
29 $result = mysql_query($sql,$link);
30
31 //4.解析商品信息(解析結果集)
32 while($row = mysql_fetch_assoc($result))
33 {
34 echo "<tr>";
35 echo "<td>{$row["id"]}</td>";
36 echo "<td>{$row["name"]}</td>";
37 echo "<td><img src='./uploads/s_{$row['pic']}'/></td>";
38 echo "<td>{$row["price"]}</td>";
39 echo "<td>{$row["total"]}</td>";
40 echo "<td>".date("Y-m-d H:i:s",$row['addtime'])."</td>";
41 echo "<td>
42 <a href='action.php?action=del&id={$row['id']}&picname={$row['pic']}'>刪除</a>
43 <a href='edit.php?id={$row['id']}'>修改</a>
44 <a href='addCart.php?id={$row['id']}'>放入購物車</a>
45
46 </td>";
47 echo "</tr>";
48 }
49 //5.釋放結果集,關閉數據庫
50 ?>
51 </table>
52 </center>
53 </body>
54 </html>
index.php

![]()
1 <html>
2 <head>
3 <title>商品信息管理</title>
4 </head>
5 <body>
6 <center>
7 <?php
8 include("menu.php");//導入導航欄
9 //1.導入配置文件
10 require("dbconfig.php");
11 //2.連接數據庫,並選擇數據庫
12 $link = @mysql_connect(HOST,USER,PASS) or die("數據庫連接失敗");
13 mysql_select_db(DBNAME,$link);
14 //3.獲取要修改的商品信息
15 $sql="select *from goods where id={$_GET['id']}";
16 $result = mysql_query($sql,$link);
17 //4.判斷是否獲取到要編輯的商品信息
18 if($result&&mysql_num_rows($result)>0)
19 {
20 $shop=mysql_fetch_assoc($result);//解析出要修改的商品信息
21 }else
22 {
23 die("沒有找到要修改的商品信息");
24 }
25
26 ?>
27 <h3>編輯商品信息</h3>
28 <form action="action.php?action=update" enctype="multipart/form-data" method="post">
29 <input type="hidden" name="id" value="<?php echo $shop['id']; ?>" />
30 <input type="hidden" name="oldpic" value="<?php echo $shop['pic']; ?>" />
31
32 <table border="0" width="300">
33 <tr>
34 <td align="right">名稱:</td>
35 <td><input type="text" name="name" value="<?php echo $shop['name']; ?>" /></td>
36 </tr>
37 <tr>
38 <td align="right">類型:</td>
39 <td>
40 <select name="typeid">
41 <?php
42 include("dbconfig.php");
43 foreach($typelist as $k=>$v)
44 {
45 $sd = ($shop['typeid']==$k)?"selected":"";//判斷是否當前的類型
46 echo "<option value='{$k}' {$sd}>{$v}</option>";
47 }
48 ?>
49 </select>
50 </td>
51 </tr>
52 <tr>
53 <td align="right">單價:</td>
54 <td><input type="text" name="price" value="<?php echo $shop['price']; ?>" /></td>
55 </tr>
56 <tr>
57 <td align="right">庫存:</td>
58 <td><input type="text" name="total" value="<?php echo $shop['total']; ?>" /></td>
59 </tr>
60 <tr>
61 <td align="right">圖片:</td>
62 <td><input type="file" name="pic"/></td>
63 </tr>
64 <tr>
65 <td align="right" valign="top">描述:</td>
66 <td><textarea rows="5" cols="20" name="note"><?php echo $shop['note']; ?></textarea></td>
67 </tr>
68
69 <tr>
70 <td colspan="2" align="center">
71 <input type="submit" value="修改" />
72 <input type="reset" value="重置" />
73 </td>
74 </tr>
75 <tr>
76 <td align="right" valign="top"> </td>
77 <td><img src="./uploads/<?php echo $shop['pic'];?>" /></td>
78 </tr>
79 </table>
80 </form>
81 </center>
82 </body>
83 </html>
edit.php

![]()
1 <?php
2 //公共函數庫
3
4 /*
5 * 文件上傳處理函數
6 * @param string filename 要上傳的文件表單項名
7 * @param string $path 上傳文件的保存路徑
8 * @param array 允許的文件類型
9 * @return array 兩個單元: ["error"] false:失敗,ture:成功
10 * ["info"] 存放失敗原因或成功的文件名
11 */
12
13 function uploadFile($filename,$path,$typelist=null)
14 {
15 //1.獲取上傳文件的名字
16 $upfile = $_FILES[$filename];
17 if(empty($typelist))
18 {
19 $typelist=array("image/gif","image/jpg","image/jpeg","image/png","image/pjpeg","image/x-png");//允許的文件類型
20 }
21 $res=array("error"=>false);//存放返回的結果
22 //2.過濾上傳文件的錯誤號
23 if($upfile["error"]>0)
24 {
25 switch($upfile["error"])
26 {
27 case 1:
28 $res["info"]="上傳的文件超過了 php.ini中upload_max_filesize選項大小";
29 break;
30 case 2:
31 $res["info"]="上傳文件的大小超過了HTML表單中MAX_FILE_SIZE選項";
32 break;
33 case 3:
34 $res["info"]="文件只有部分被上傳";
35 break;
36 case 4:
37 $res["info"]="沒有文件被上傳";
38 break;
39 case 6:
40 $res["info"]="找不到臨時文件夾";
41 break;
42 case 7:
43 $res["info"]="文件寫入失敗";
44 break;
45 default:
46 $res["info"]="未知錯誤!";
47 break;
48
49 }
50 return $res;
51 }
52 //3.本次文件大小的限制
53 if($upfile["size"]>1000000)
54 {
55 $res["info"]="上傳文件過大!";
56 return $res;
57 }
58 //4.過濾類型
59 if(!in_array($upfile["type"],$typelist))
60 {
61 $res["info"]="上傳類型不符!".$upfile["type"];
62 return $res;
63 }
64 //5.初始化下信息(為圖片產生一個隨機的名字)
65 $fileinfo = pathinfo($upfile["name"]);
66 do
67 {
68 $newfile = date("YmdHis").rand(1000,9999).".".$fileinfo["extension"];//隨機產生名字
69
70 }while(file_exists($newfile));
71 //6.執行上傳處理
72 if(is_uploaded_file($upfile["tmp_name"]))
73 {
74 if(move_uploaded_file($upfile["tmp_name"],$path."/".$newfile))
75 {
76 //將上傳成功後的文件名賦給返回數組
77 $res["info"]=$newfile;
78 $res["error"]=true;
79 return $res;
80 }else
81 {
82 $res["info"]="上傳文件失敗!";
83 }
84 }else
85 {
86 $res["info"]="不是一個上傳的文件";
87 }
88 return $res;
89 }
90 //==================================================
91 /*
92 *
93 * 等比縮放函數(以保存的方式實現)
94 * @param string $picname 被縮放的處理圖片源
95 * @param int $maxx 縮放後的圖片的最大寬度
96 * @param int $maxy 縮放後圖片的最大高度
97 * @param string $pre 縮放後圖片名的前綴名
98 * @param string 返回後的圖片名稱(帶路徑),如a.jpg=>s_a.jpg
99 */
100 function imageUpdateSize($picname,$maxx=100,$maxy=100,$pre="s_"){
101 $info=getimagesize($picname); //獲取圖片的基本信息
102 $w = $info[0];//獲取寬度
103 $h = $info[1]; // 獲取高度
104 switch($info[2]){
105 case 1: //gif
106 $im=imagecreatefromgif($picname);
107 break;
108 case 2: //jpg
109 $im=imagecreatefromjpeg($picname);
110 break;
111 case 3: //png
112 $im=imagecreatefrompng($picname);
113 break;
114 default :
115 die("圖片類型錯誤");
116 }
117 //計算縮放比例
118 if(($maxx/$w)>($maxy/$h)){
119 $b=$maxy/$h;
120 }else{
121 $b=$maxx/$w;
122 }
123 //計算縮放後的尺寸
124 $nw=floor($w*$b);
125 $nh=floor($h*$b);
126 //創建一個新的圖像源
127 $nim=imagecreatetruecolor($nw,$nh);
128 //執行等比縮放
129 imagecopyresampled($nim,$im,0,0,0,0,$nw,$nh,$w,$h);
130 //輸出圖像
131 $picinfo=pathinfo($picname);
132 $newpicname=$picinfo["dirname"]."/".$pre.$picinfo["basename"];
133
134 switch($info[2]){
135 case 1:
136 imagegif($nim,$newpicname);
137 break;
138 case 2:
139 imagejpeg($nim,$newpicname);
140 break;
141 case 3:
142 imagepng($nim,$newpicname);
143 break;
144 default:
145 echo "圖片壓縮錯誤";
146 }
147 //釋放圖片資源
148 imagedestroy($im);
149 imagedestroy($nim);
150 //返回結果
151 return $newpicname;
152 }
function.php

![]()
1 <h2>商品信息管理--購物車</h2>
2 <a href="index.php">浏覽商品</a>|
3 <a href="add.php">添加商品</a>|
4
5 <a href="myCart.php">我的購物車</a>|
6 <a href="clearCart.php">清空購物車</a>
7
8
9 <hr width=80%/>
menu.php

![]()
1 <?php
2 session_start();//啟動會話
3
4 ?>
5 <html>
6 <head>
7 <title>商品信息管理</title>
8 </head>
9 <body>
10 <center>
11 <?php include("menu.php");//導入導航欄 ?>
12 <h3>添加商品到購物車<h3>
13
14 <?php
15 //從數據庫中讀取要購買的信息並添加到購物車中
16 //1.導入配置文件
17 require("dbconfig.php");
18 //2.連接數據庫,並選擇數據庫
19 $link = @mysql_connect(HOST,USER,PASS) or die("數據庫連接失敗");
20 mysql_select_db(DBNAME,$link);
21 //3.執行商品信息查詢(獲取要購買的信息)
22 $sql="select * from goods where id={$_GET['id']}";
23 $result = mysql_query($sql,$link);
24
25 //4.判斷是否沒有找到要購買的信息,若有就讀取出要購買的信息
26 if(empty($result) || mysql_num_rows($result)==0)
27 {
28 die("沒有找到要購買的信息!");
29 }else
30 {
31 $shop = mysql_fetch_assoc($result);
32 }
33 $shop["num"]=1;//添加一個數量的字段
34 //5.放入購物車中(若已存在的商品實現數量累加)
35 if(isset($_SESSION["shoplist"]{$shop['id']}))
36 {
37 //若存在數量增加1
38 $_SESSION["shoplist"][$shop['id']]["num"]++;
39 }else
40 {
41 //若不存在,作為新購買的商品添加到購物車中
42 $_SESSION["shoplist"][$shop['id']]=$shop;
43 }
44
45 ?>
46 </table>
47 </center>
48 </body>
49 </html>
addCart

![]()
1 <?php
2 session_start();//啟動會話
3
4 ?>
5 <html>
6 <head>
7 <title>商品信息管理</title>
8 </head>
9 <body>
10 <center>
11 <?php include("menu.php");//導入導航欄 ?>
12 <h3>浏覽我的購物車<h3>
13 <table border="1" width="600">
14 <tr>
15 <th>商品id號</th>
16 <th>商品名稱</th>
17 <th>商品圖片</th>
18 <th>單價</th>
19 <th>數量</th>
20 <th>小計</th>
21 <th>操作</th>
22 </tr>
23 <?php
24 $sum =0;//定義總金額的變量
25 if(isset($_SESSION["shoplist"])){
26 foreach($_SESSION["shoplist"] as $v)
27 {
28 echo "<tr>";
29 echo "<td>{$v['id']}</td>";
30 echo "<td>{$v['name']}</td>";
31 echo "<td><img src='./uploads/s_{$v['pic']}' /></td>";
32 echo "<td>{$v['price']}</td>";
33 echo "<td align='center'>
34 <button onclick='window.location.href=\"updateCart.php?id={$v['id']}&num=-1\"'>-</button>
35 {$v['num']}
36 <button onclick='window.location.href=\"updateCart.php?id={$v['id']}&num=+1\"'>+</button>
37 </td>";
38 echo "<td>".($v["price"]*$v['num'])."</td>";
39 echo "<td><a href='clearCart.php?id={$v['id']}'>刪除</a></td>";
40 echo "</tr>";
41 $sum+=$v["price"]*$v['num'];//累計金額
42 }
43 }
44 ?>
45 <tr>
46 <th>總計金額:</th>
47 <th colspan ="5" align="right"><?php echo $sum; ?></th>
48 <td> </td>
49 </tr>
50 </table>
51 </center>
52 </body>
53 </html>
myCart.php

![]()
1 <?php
2
3 //刪除購物車session中的信息
4 session_start();//啟動會話
5
6 //判斷是刪除一個商品還是清空購物車
7 if($_GET['id'])
8 {
9 //只刪除一種商品
10 unset($_SESSION['shoplist'][$_GET['id']]);
11 }else
12 {
13 //清空session中的商品
14 unset($_SESSION["shoplist"]);
15 }
16
17
18 //跳轉到浏覽購物車界面
19 header("Location:myCart.php");
20 ?>
clearCart.php

![]()
1 <?php
2 session_start();//啟動會話
3 //修改購物車中的信息
4
5 //獲取要修改的信息
6
7 $id = $_GET['id'];
8 $num = $_GET['num'];
9
10 //修改商品信息
11 $_SESSION["shoplist"][$id]["num"]+=$num;
12
13 //防止商品數量過小
14 if($_SESSION["shoplist"][$id]["num"]<1)
15 {
16 $_SESSION["shoplist"][$id]["num"]=1;
17 }
18 //跳轉回我的購物車界面
19 header("Location:myCart.php");
20
21 ?>
updateCart.php
以下為index.php截圖:

myCart.php截圖:

最後送上一句:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈!!!!