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 相关文章推荐
非常不错的MySQL优化的8条经验
Mar 24 PHP
php addslashes和mysql_real_escape_string
Jan 24 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
PHP利用MySQL保存session的实现思路及示例代码
Sep 09 PHP
php判断两个日期之间相差多少个月份的方法
Jun 18 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
Symfony2框架创建项目与模板设置实例详解
Mar 17 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
PHP实现的AES双向加密解密功能示例【128位】
Sep 03 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 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中isset、empty的用法与区别示例详解
2020/11/05 PHP
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python内置的字符串处理函数整理
2013/01/29 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
利用python爬取散文网的文章实例教程
2017/06/18 Python
python list转置和前后反转的例子
2019/08/26 Python
python定时任务 sched模块用法实例
2019/11/04 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
学生发电厂实习自我鉴定
2013/09/22 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
就职演讲稿范文
2014/05/19 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS