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+java实现自动新闻滚动窗口
Oct 09 PHP
攻克CakePHP系列二 表单数据显示
Oct 22 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
php数组添加元素方法小结
Dec 20 PHP
php支付宝接口用法分析
Jan 04 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
java解析json方法总结
May 16 PHP
用php如何解决大文件分片上传问题
Jul 07 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中strtotime函数性能分析
2016/11/20 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
php成功操作redis cluster集群的实例教程
2019/01/13 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
Python和Go语言的区别总结
2019/02/20 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
编辑硕士自荐信范文
2013/11/27 职场文书
医学专业毕业生个人求职信
2013/12/25 职场文书
优秀交警事迹材料
2014/01/26 职场文书
军人违纪检讨书
2014/02/04 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
JavaScript实现登录窗体
2021/06/22 Javascript
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS