商品信息管理
在线增删改查和图片信息管理
主要技术:文件上传、图片缩放、数据库基本操作
思路:
1、设计并创建数据库
库名:demodb 表名:goods
编号(id) 名称(name) 商品类型(typeid) 价格(price) 库存量(total) 商品图片(pic) 描述(note) 发布时间(addtime)
CREATE TABLE `goods` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL, `typeid` int(10) unsigned NOT NULL, `price` double(6,2) unsigned NOT NULL, `total` int(10) unsigned NOT NULL, `pic` varchar(32) NOT NULL, `note` text, `addtime` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) )
创建项目与具体文件
2、deconfig.php 配置文件
<?php //数据库基本配置 define("HOST", "localhost"); define("USER", "root"); define("PASSWORD", "toor"); define("DBNAME", "demodb"); //商品列表信息 $typelist = array(1=>"服装", 2=>"数码", 3=>"食品"); ?>
3、menu.php 导航页面
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<html> <title>商品信息管理</title> <body> <h3>商品信息管理</h3> <a href="index.php">浏览商品</a> | <a href="add.php">发布商品</a> <hr></hr> </body> </html>
4、functions.php 公共函数库 【文件上传函数与图片缩放】
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?php //图片上传 function uploadFile($filename, $path, $typelist=null){ //1、获取上传文件名字 $upfile = $_FILES["$filename"]; if(empty($typelist)){ $typelist = array("image/jpeg", "image/png", "image/gif"); //定义允许的类型 } //$path = "./uploads/"; //定义上传后的目录 $res = array("error"=>false); //存放返回的结果 //2、过滤上传文件错误号 if($upfile["error"] > 0){ switch ($upfile["error"]){ case 1: echo "上传文件超过php.ini中的限定值"; break; case 2: echo "上传文件大小超过HTML表单中的指定值"; break; case 3: echo "文件只有部分上传"; break; case 4: echo "没有文件被上传"; break; case 6: echo "找不到临时文件夹"; break; case 7: echo "文件写入失败"; break; } die("图片上传出错"); } //3、本次上传大小过滤 if($upfile['size'] > 2000000){ die("图片过大"); } //4、类型过滤 if(!in_array($upfile["type"], $typelist)){ die("类型出错"); } //5、上传文件重命名(随机获取一个文件名,保留后缀名) $fileinfo = pathinfo($upfile["name"]); //解析上传文件名字 do{ $newfile = date("Y-m-d").rand(1000, 9999).".".$fileinfo["extension"]; }while( file_exists($path.$newfile) ); //6、执行文件上传 //判断是否是一个上传文件 if(is_uploaded_file($upfile["tmp_name"])){ //移动上传文件 if(move_uploaded_file($upfile["tmp_name"], $path.$newfile)){ //echo "文件上传成功"; //echo "<h3><a href='index.php'>浏览文件</a><h3>"; }else{ die("上传文件失败"); } }else{ die("不是一个上传文件"); } return $newfile; } //图片等比缩小 function ImageUpdateSize($pricname, $maxx, $maxy, $pre) { //1、获取图片基本信息 $info = getimagesize($pricname); $w = $info[0]; //源图片宽度 $h = $info[1]; //源图片高度 // var_dump($info); // $info['2']存储的是图片的类型:1=GIF, 2=JPG, 3=PNG //2、获取图片类型并为此创建对应类型的新图片资源(JPG GIF PNG) <= imagecopyresampled()进行缩放处理的函数语法要求 //imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h ) //参数:dst_image目标图象连接资源 src_image源图象连接资源 //dst_x目X 坐标点 dst_y目标Y坐标点 src_x源的X坐标点 src_y源的Y坐标点 //dst_w目标宽度 dst_h目标高度 src_w源图象的宽度 src_h源图象的高度 switch($info[2]){ case 1: $im = imagecreatefromgif($pricname); break; case 2: $im = imagecreatefromjpeg($pricname); break; case 3: $im = imagecreatefrompng($pricname); break; default: die("图片类型错误!"); } //3、计算出缩放比例 if(($maxx/$w) > ($maxy/$h)){ //假设原宽高(600:300) 固定最大缩放宽高=100 (100/600)(100/300)取值最小那个 $b = $maxy/$h; }else{ $b = $maxx/$w; } //4、计算缩放后尺寸,floor()舍去小数部分取整 $nw = floor($w * $b); $nh = floor($h * $b); //5、创建一个新的图片源作为目标图像 $nim = imagecreatetruecolor($nw, $nh); //6、执行等比例缩放,(结果为:拷贝成新图像nim) $npricname = imagecopyresampled($nim, $im, 0,0,0,0, $nw, $nh, $w, $h); //7、输出图像,根据源图像的类型,输出对应的类型 $picinfo = pathinfo($pricname); $new_name = $picinfo["dirname"]."/".$pre.$picinfo["basename"]; //文件名 switch($info[2]){ case 1: imagegif($nim, $new_name); break; case 2: imagejpeg($nim, $new_name); break; case 3: imagepng($nim, $new_name); break; } //8、销毁图像 imagedestroy($im); imagedestroy($nim); } ?>
5、add.php 添加商品页面
<?php include("menu.php"); ?>
<h3>发布商品信息</h3>
<form action="action.php?action=add" enctype="multipart/form-data" method="post">
<table width="400" border="0">
<td align="right">商品类别:</td>
<td><select name="typeid">
<?php
include("dbconfig.php");
foreach($typelist as $k=>$v){
echo "<option value='{$k}'>{$v}</option>";
<select></td>
<td align="right">商品图片:</td>
<td><input type="file" name="pic">
<td align="right" valign="top">商品描述:</td>
<td><textarea name="note" cols="25" rows="5"></textarea></td>
6、action.php 增、删、改操作
<?php //1、导入配置文件和函数库 require("dbconfig.php"); require("functions.php"); //2、连接Mysql。选择数据库 $link = mysql_connect(HOST, USER, PASSWORD) or die("数据库连接失败"); mysql_select_db(DBNAME, $link) or die("数据库选择失败"); //3、获取action的值,并做对应操作 switch($_GET["action"]){ case "add": //1、获取添加信息 $name = $_POST["name"]; $typeid = $_POST["typeid"]; $price = $_POST["price"]; $total = $_POST["total"]; $note = $_POST["note"]; $addtime = time(); //2、验证(省略) //3、执行图片上传 $pic = uploadFile("pic", "./uploads/"); //4、图片等比缩放 ImageUpdateSize('./uploads/'.$pic, 50, 50, "S_"); //5、拼装sql语句,字符型要加单引号,建议全部 $sql = "insert into goods values(null, '{$name}', '{$typeid}', {$price}, {$total}, '{$pic}', '{$note}', {$addtime})"; mysql_query($sql, $link); //6、判断输出 if(mysql_insert_id($link) > 0){ header("Location:index.php"); }else{ echo "商品发布失败"; } break; case "del": $sql = "delete from goods where id={$_GET['id']}"; mysql_query($sql, $link); //执行图片删除 if(mysql_affected_rows($link) > 0); @unlink("./uploads/".$_GET['picname']); @unlink("./uploads/S_".$_GET['picname']); header("Location:index.php"); break; case "update": //1、获取要修改的信息 $id = $_POST['id']; $name = $_POST["name"]; $typeid = $_POST["typeid"]; $price = $_POST["price"]; $total = $_POST["total"]; $note = $_POST["note"]; $addtime = time(); $pic = $_POST['oldpic']; //2、数据验证(省) //3、判断有没图片 if($_FILES['pic']['error'] != 4){ //error_4:有文件上传 //执行上传 $pic = uploadFile("pic", "./uploads/"); ImageUpdateSize('./uploads/'.$pic, 50, 50, "S_"); } //4、执行修改 $sql = "update goods set name='{$name}', ~~ where id={$id}"; mysql_query($sql, $link); //5、判断修改是否成功 //若有图片上传,删除老图 if(mysql_affected_rows($link) > 0){ if($_FILES['pic']['error'] != 4){ @unlink("./uploads/".$_POST['oldpic']); @unlink("./uploads/S_".$_POST['oldpic']); header("Location:index.php"); //4、关闭数据库
7、index.php 浏览页面
<th>名称</th><th>类型</th><th>价格</th><th>库存量</th><th>图片</th><th>发布时间</th><th>操作</th>
<?php
//从数据库中读取信息并输出到浏览器表格中
//1、导入配置文件
include("dbconfig.php");
//2、连接数据库,选择数据库
$link = mysql_connect(HOST, USER, PASSWORD);
mysql_select_db(DBNAME, $link);
//3、执行查询
$sql = "select * from goods";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
echo "<td>{$typelist[$row['typeid']]}</td>";
echo "<td><img src='./uploads/S_{$row['pic']}'</td>"; //图片
echo "<td>".date("Y-m-d H:i:s", $row['addtime'])."</td>";
echo "<td><a href='action.php?action=del&id={$row['id']}&picname={$row['pic']}'>删除</a>
<a href='edit.php?id={$row['id']}'>编辑</a></td>";
//4、关闭数据库
8、edit.php 修改页面
<center>
<?php include("menu.php"); ?>
<h3>编辑商品信息</h3>
<?php
include("dbconfig.php");
$link = mysql_connect(HOST, USER, PASSWORD) or die();
mysql_select_db(DBNAME, $link);
$sql = "select * from goods where id=".$_GET['id'];
$result = mysql_query($sql, $link);
//判断是否获取到要编辑的商品信息
if($result && mysql_num_rows($result) > 0){
$shops = mysql_fetch_assoc($result); //解析结果集
}else{
die("没找到");
}
?>
<form action="action.php?action=update" enctype="multipart/form-data" method="post">
<input type="hidden" name="id" value="<?php echo $shops['id'];?>">
<input type="hidden" name="oldpic" value="<?php echo $shops['pic'];?>"> <!--原图-->
<table width="500" border="0">
<td align="right">商品类别:</td>
<td><select name="typeid">
<?php
include("dbconfig.php");
foreach($typelist as $k=>$v){
$sd = ($shops['typeid'] == $k)?"selected":""; //是否是当前的类型,返回默认selected
echo "<option value='{$k}'{$sd}>{$v}</option>";
<select></td>
<td align="right">商品图片:</td>
<td><input type="file" name="pic" ></td>
<td align="right" valign="top">商品描述:</td>
<td><textarea name="note" cols="25" rows="5"><?php echo $shops['note'];?></textarea></td>
<tr>
<td align="right"></td>
<td><img src="./uploads/<?php echo $shops['pic'];?>"/></td>