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文件关系图示:

PHP基础示例:商品信息管理系统v1.1_第1张图片

好,那下面是代码部分:

首先是建表语句:

 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截图:

PHP基础示例:商品信息管理系统v1.1_第2张图片

myCart.php截图:

PHP基础示例:商品信息管理系统v1.1_第3张图片

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

你可能感兴趣的:(php基础)