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模板,主要想体现一下思路
Dec 25 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
解析php常用image图像函数集
Jun 24 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
php树型类实例
Dec 05 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
功能强大的php文件上传类
Aug 29 PHP
详解Yii2高级版引入bootstrap.js的一个办法
Mar 21 PHP
浅析PHP数据导出知识点
Feb 17 PHP
ThinkPHP 3使用OSS的方法
Jul 19 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 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
PHPMyAdmin 快速配置方法
2009/05/11 PHP
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
php页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
js比较日期大小的方法
2015/05/12 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
浅谈python 类方法/静态方法
2020/09/18 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
物流专业大学生求职信范文
2013/10/28 职场文书
大学军训通讯稿
2014/01/13 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
少儿励志名言(80句)
2019/08/14 职场文书