PHP基礎示例:商品信息管理系統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="添加"/>&nbsp;&nbsp;
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="修改" />&nbsp;&nbsp;
72                         <input type="reset" value="重置" />
73                     </td>
74                 </tr>
75                 <tr>
76                     <td align="right" valign="top">&nbsp;</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>&nbsp;</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截圖:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM