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伪造referer实例代码
Sep 20 PHP
php 上一篇,下一篇文章实现代码与原理说明
May 09 PHP
php表单转换textarea换行符的方法
Sep 10 PHP
PHP简洁函数小结
Aug 12 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
PHP处理会话函数大总结
Aug 05 PHP
php版微信小店API二次开发及使用示例
Nov 12 PHP
php探针不显示内存解决方法
Sep 17 PHP
PHP基于array_unique实现二维数组去重
Jul 14 PHP
浅谈Laravel中使用Slack进行异常通知
May 29 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 文章调用类代码
2011/08/11 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
JS控制表格隔行变色
2006/06/26 Javascript
关于JavaScript的一些看法
2009/05/27 Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
pandas的qcut()方法详解
2019/07/06 Python
Python中Unittest框架的具体使用
2019/08/27 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
C语言开发工程师测试题
2016/12/20 面试题
医学生求职自荐信
2013/10/25 职场文书
后勤主管工作职责
2013/12/07 职场文书
邮政员工辞职信
2014/01/16 职场文书
风险评估实施方案
2014/03/09 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
运输公司工作总结
2015/08/11 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
JavaScript实现优先级队列
2021/12/06 Javascript
MySQL Server层四个日志的实现
2022/03/31 MySQL