商品信息管理

在线增删改查和图片信息管理

主要技术:文件上传、图片缩放、数据库基本操作

思路:

1、设计并创建数据库

库名:demodb    表名:goods

编号(id)  名称(name)  商品类型(typeid)  价格(price)  库存量(total)  商品图片(pic)  描述(note)  发布时间(addtime)

CREATE TABLE `goods` (
`id` int() unsigned NOT NULL AUTO_INCREMENT,
`name` varchar() NOT NULL,
`typeid` int() unsigned NOT NULL,
`price` double(,) unsigned NOT NULL,
`total` int() unsigned NOT NULL,
`pic` varchar() NOT NULL,
`note` text,
`addtime` int() 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  导航页面

<html>
<title>商品信息管理</title>
<body>
<h3>商品信息管理</h3>
<a href="index.php">浏览商品</a> |
<a href="add.php">发布商品</a>
<hr></hr>
</body>
</html>

  4、functions.php  公共函数库  【文件上传函数与图片缩放】

<?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>

PHP.21-商品信息管理的更多相关文章

  1. 文献综述三:基于JSP的商品信息管理系统设计与开发

    一.基本信息 标题:基于JSP的商品信息管理系统设计与开发 时间:2015 出版源:Computer Knowledge and Technology 文件分类:jsp技术的系统开发 二.研究背景 通 ...

  2. C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试

    在上篇<C#开发微信门户及应用(22)-微信小店的开发和使用>里面介绍了一些微信小店的基础知识,以及对应的对象模型,本篇继续微信小店的主题,介绍其中API接口的封装和测试使用.微信小店的相 ...

  3. PHP基础示例:商品信息管理系统v1.1[转]

      实现目标:使用php和mysql写一个商品信息管理系统,并带有购物车功能 一.创建数据库和表 1.创建数据库和表:demodb 2.创建表格:goods 字段:商品编号,商品名称,商品类型,商品图 ...

  4. PHP基础示例:商品信息管理系统v1.1

    实现目标:使用php和mysql写一个商品信息管理系统,并带有购物车功能 一.创建数据库和表 1.创建数据库和表:demodb 2.创建表格:goods 字段:商品编号,商品名称,商品类型,商品图片, ...

  5. 用C语言制作小型商品信息管理系统过程中的问题

    大神请默默飘过... 以下是第一次制作时的源码: // 商品信息管理.cpp : 定义控制台应用程序的入口点. // // 小型商品信息管理系统.cpp : 定义控制台应用程序的入口点. // #in ...

  6. 20篇关于商品管理系统和uml技术的相关文献

    1.基于UML技术的商品管理系统设计与实现 2.UML技术在行业资源平台系统建模中的应用 3.基于JSP的商品信息管理系统设计与开发 4.基于UML技术的客户关系管理系统实现 5.商品管理系统 6.基 ...

  7. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第九天】(商品详情页面实现)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  8. Java Swing设计简单商品信息管理系统(java swing+mysql+eclipse)

    一.概述 为了管理好商店库存信息,提升店铺管理工作效率,结合实际工作需要,设计和开发本系统,主要用于商店商品信息维护出入库等.包含商品库存信息查看.商品信息修改,新增商品信息,删除信息等功能. 二.功 ...

  9. SQL 递归树 子父节点相互查询

    if object_id('[tb]') is not null drop table [tb] go create table [tb]([modeid] int,modename varchar( ...

随机推荐

  1. Row_number() OVER(PARTITION BY xxx ORDER BY XXX)分组排序

    --//创建一个信息表 ,) ,),st_name ),class ),score ,)) --//插入测试数据============start=================== insert ...

  2. Laravel Scheduling Package

    Laravel 是在 App\Console\Kernel 类中的 schedule 方法去定义所有的调度任务. iBrand 产品作为一个电商类产品,本身业务需求非常庞大和复杂,全部定义在 sche ...

  3. 关于Linux主流框架运维工作剖析

    LINUX是开源的,这也是最主要的原因,想学Windows,Unix对不起,没有源代码.也正是因为这样,LINUX才能够像雪球一样越滚越大,发展到现在这种规模.今天将为大家带来关于Linux主流框架运 ...

  4. C盘空间太大,分区助手减小分区大小教程

    首先看一个需要缩小C盘或需要减少分区空间的一个例子:“我的电脑里C盘剩余空间为530GB,除了C盘外还有一个D盘,但D盘的空间不到30GB,另外还有两个隐藏分区,一个200MB,一个15GB.我想把C ...

  5. 《反脆弱》:软件业现成的鲁棒性(Robust)换了个说法变成了作者的发明,按作者的理论推导出许多可笑愚蠢的原则来

    本书作者名气比较大,写过<黑天鹅><随机漫步的傻瓜>等书,据称专门研究不确定度性.本书是他以前的书的内容的延续. 所谓的反脆弱,其实软件业有现成的名词鲁棒性(Robust)就是 ...

  6. SAP CRM WebClient UI和Fiori UI混搭并存

    SAP CRM里有个功能可以创建HANA live report,消费HANA Studio里创建的模型. 最后创建好的report长这个样子: 具体创建步骤可以参考我的博客Step by Step ...

  7. 调试wmi连接主机进行监控

    wmi连接及配置 1.首先介绍两款连接wmi的工具: ①windows自带的wbemtest. ②WMI 资源浏览器 两者都是可以连接wmi,并且执行相关命令的工具. 2.尝试连接首先利用win自带的 ...

  8. QT Creater 配色方案及下载

    打开QT Creater的工具--选项--文本编辑器--字体和颜色,复制一份配色方案:Vim (dark) ->Vim (dark) (copy) 更改想更改的任何内容的配色.其中,修改后的文件 ...

  9. 基于LBS的多人聊天

  10. POJ-2155 Matrix---二维树状数组+区域更新单点查询

    题目链接: https://vjudge.net/problem/POJ-2155 题目大意: 给一个n*n的01矩阵,然后有两种操作(m次)C x1 y1 x2 y2是把这个小矩形内所有数字异或一遍 ...