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 相关文章推荐
PHP编程与应用
Oct 09 PHP
使用PHP批量生成随机用户名
Jul 10 PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
PHP安全防范技巧分享
Nov 03 PHP
php数组去重的函数代码
Feb 03 PHP
php实现加减法验证码代码
Feb 14 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
Laravel 中获取上一篇和下一篇数据
Jul 27 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
简单谈谈PHP面向对象之标识对象
Jun 27 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 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
php设计模式 Visitor 访问者模式
2011/06/28 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
php简单日历函数
2015/10/28 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
js字符串转成JSON
2013/11/07 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
2018/11/02 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
JS实现百度搜索框
2021/02/25 Javascript
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
python中reload(module)的用法示例详解
2017/09/15 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
python 除法保留两位小数点的方法
2018/07/16 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
python tkinter实现屏保程序
2019/07/30 Python
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
工作人员思想汇报
2014/01/09 职场文书
办理护照介绍信
2014/01/16 职场文书
九年级政治教学反思
2014/02/06 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
单身证明范本
2015/06/15 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers