php实现批量上传数据到数据库(.csv格式)的案例


Posted in PHP onJune 18, 2017

友情提示:上传数据的文档需要转化为.csv格式的文档

前端代码:

<form name="importForm" action="import.php" method="POST" enctype="multipart/form-data"> 
<input type="hidden" value="import_goods" name="file"> 
  <table cellpadding="2" cellspacing="1" class="tb"> 
    <tbody> 
    <tr> 
      <td width="200">选择批量上传文档:</td> 
      <td><input type="file" name="upfilename" id="upfilename" value=""></td> 
    </tr> 
    <tr> 
      <td colspan="2"> 
        <input type="submit" name="submit" value="提交" class="btn"> 
      </td> 
    </tr> 
    </tbody> 
  </table> 
</form>

后端代码:import.php文件(这里只粘贴主要代码,具体实现方法需自己完成)

if(isset($_POST['submit'])){ 
      stripos(PHP_OS, "WIN") !== false ? setlocale(LC_ALL, '') : setlocale(LC_ALL,'zh_CN.GBK'); 
       
      $fext = substr($_FILES['upfilename']['name'], strrpos($_FILES['upfilename']['name'], '.') + 1); 
      if ($fext != 'csv') { 
        die('请上传csv格式的文件',HTTP_REFERER); 
      } 
      $handle = @fopen($_FILES['upfilename']['tmp_name'], "rb"); 
   
      $i = 0; 
      $import_type = ''; 
      if ($handle) 
      { 
        while($line_data = fgetcsv($handle, 4096, ',')) 
        { 
          if ($i == 0) { 
            $import_type = trim($line_data[0]); 
            $i = 1; 
          } elseif (intval($line_data[0])) { 
            $line_list[] = $line_data; 
          } 
        } 
      } 
      //循环转换数据格式 
      foreach ($line_list as $i=> $v) 
      { 
        foreach ($v as $j=> $value) 
        { 
          $line_list[$i][$j] = iconv('GBK', 'UTF-8//IGNORE',$line_list[$i][$j]); 
        } 
      }//编码转换 
       
      fclose($handle); 
 
      if(!empty($line_list)) 
      { 
        // 登记号 
        $sn = array(); 
        $top_catid = 0; 
        $name = ''; 
        $func_name = ''; 
        switch ($import_type) { 
          case 'patent'; 
          $top_catid = 5; 
          $name = '专利申请号'; 
          $func_name = 'deal_import_patent'; 
          break; 
          case 'trademark'; 
          $top_catid = 4; 
          $name = '商标注册号'; 
          $func_name = 'deal_import_trademark'; 
          break; 
          case 'copyright'; 
          $top_catid = 2185; 
          $name = '登记号'; 
          $func_name = 'deal_import_copyright'; 
          break; 
          default: 
            die('上传文档未明确指定知产类型!'); 
          break; 
        } 
        if ($import_type == 'patent') { 
          foreach($line_list as $lkey => $lval) { 
            $lval[2] = trim($lval[2]); 
            if ($lval[2] == '专利技术') { 
              // 技术专利 
              if(!empty($lval[1])) { 
                if(in_array($lval[1],$sn)) 
                { 
                  die('列表中序号为'.$lval[0].'的知产的'.$name.$lval[1].'与前面的出现重复!');//判断是否有重复的数据(根据自己所需判断) 
                } 
                $sn[] = trim($lval[1]); 
              } else { 
                die('列表中序号为'.$lval[0].'的知产的'.$name.'为空!'); 
              } 
            } else { 
              // 非技术专利 
              $line_list[$lkey][1] = ''; 
            } 
          } 
        } elseif ($import_type == 'trademark') { 
          foreach($line_list as $lkey => $lval) { 
            if(!empty($lval[1])) { 
              if(in_array($lval[1],$sn)) 
              { 
                die('列表中序号为'.$lval[0].'的知产的'.$name.'与前面的出现重复!'); 
              } 
              $sn[] = $lval[1]; 
            } else { 
              die('列表中序号为'.$lval[0].'的知产的'.$name.'为空!'); 
            } 
          } 
        } 
        if (!empty($sn)) { 
          $sql = 'SELECT serial_number FROM ' .$table_name. ' WHERE top_catid = '.$top_catid.' AND serial_number IN (\'' .implode("','", $sn). '\')'; 
          $result = $goods_db->query($sql); 
          $r = $goods_db->fetch_array(); 
          $exist = array(); 
          foreach ($r as $k=>$v){ 
            $exist[] = $v['serial_number']; 
          } 
           
          if (!empty($exist)) die($name.'为:'.implode(',',$exist).'的知产已存在');//数据库中是否有相同的数据(根据自己所需判断) 
        }     
        // 调用处理函数 
        self::$func_name($line_list);//此时$line_list即为你上传文档的数据,数组格式,根据自己所需将数据导入数据库 
        die('批量导入完成!'); 
      } 
       
    }

.csv文档的格式为:

php实现批量上传数据到数据库(.csv格式)的案例

以上这篇php实现批量上传数据到数据库(.csv格式)的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
模仿OSO的论坛(二)
Oct 09 PHP
PHP中的日期及时间
Nov 23 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
Jul 01 PHP
php实现的zip文件内容比较类
Sep 24 PHP
smarty内置函数capture用法分析
Jan 22 PHP
php中文验证码实现方法
Jun 18 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
PHP读取PPT文件的方法
Dec 10 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 PHP
PHP更安全的密码加密机制Bcrypt详解
Jun 18 #PHP
Laravel中log无法写入问题的解决
Jun 17 #PHP
php下载远程大文件(获取远程文件大小)的实例
Jun 17 #PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 #PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 #PHP
thinkphp查询,3.X 5.0方法(亲试可行)
Jun 17 #PHP
php 生成加密公钥加密私钥实例详解
Jun 16 #PHP
You might like
深入array multisort排序原理的详解
2013/06/18 PHP
PHP数组相关函数汇总
2015/03/24 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
jQuery实现html元素拖拽
2015/07/21 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
Python实现excel转sqlite的方法
2017/07/17 Python
关于Django外键赋值问题详解
2017/08/13 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
Python 处理图片像素点的实例
2019/01/08 Python
python模拟实现斗地主发牌
2020/01/07 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
办理暂住证介绍信
2014/01/11 职场文书
总经理司机岗位职责
2014/02/06 职场文书
技能比赛获奖感言
2014/02/14 职场文书
导游个人求职信
2014/04/25 职场文书
统计专业自荐书
2014/07/06 职场文书
公司委托书格式范本
2014/09/16 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js