zoukankan      html  css  js  c++  java
  • PHP.21-商品信息管理

    商品信息管理

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

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

    思路:

    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  导航页面

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

      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);
        }
    ?>
    View Code

      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>

  • 相关阅读:
    mysql ACID与四种隔离级别归纳总结
    python django查询12306火车票
    python json dumps与loads有可能犯的错误
    python出现UnicodeEncodeError有可能产生的另一个原因
    python安装新版本及pip
    Django添加防跨站请求伪造中间件
    python List的一些相关操作
    mysql中varbinary、binary、char、varchar异同
    (原创)如何使用boost.asio写一个简单的通信程序(一)
    (原创)用c++11实现简洁的ScopeGuard
  • 原文地址:https://www.cnblogs.com/zixuanfy/p/6735219.html
Copyright © 2011-2022 走看看