php实现批量上传数据到数据库(.csv格式)的案例

友情提示:上传数据的文档需要转化为.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格式)的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解php几行代码实现CSV格式文件输出

    整理文档,搜刮出一个php实现CSV格式文件输出,稍微整理精简一下做下分享. //适用于不需要设置格式简单将数据导出的程序,多多指教...... $str .= 'pro_code'.','.'words'.'\n';//首先写入表格标题栏 foreach($is_error as $key => $value){//循环写入数据 $str .= $value['pro_code'].",".$value['words']."\n"; } $str = ico

  • 完美解决php 导出excle的.csv格式的数据时乱码问题

    1.header('Content-Encoding: XXXX'); 有可能是编码问题:可以尝试UTF-8,GBK,GB2312,等编码格式 2.有可能是文件编码问题,虽然UTF-8不建议带BOM,但是导出的excle是微软的产品,所以需要把文件格式改成,UTF-8有BOM格式的. 以上这篇完美解决php 导出excle的.csv格式的数据时乱码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • php将数组转换成csv格式文件输出的方法

    本文实例讲述了php将数组转换成csv格式文件输出的方法.分享给大家供大家参考.具体实现方法如下: <?php $sales = array( array('east','2005-01-01','2005-02-01',12.54), array('west','2005-01-01','2005-02-01',546.33), array('south','2005-01-01','2005-02-01',93.26), array('north','2005-01-01','2005-02

  • php导出csv格式数据并将数字转换成文本的思路以及代码分享

    php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."\n"; 然后对需要保存csv的数组进行foreach循环,例如 复制代码 代码如下: if (!empty($lists)){                  foreach($lists as $key => $value){                    $ti

  • php实现批量上传数据到数据库(.csv格式)的案例

    友情提示:上传数据的文档需要转化为.csv格式的文档 前端代码: <form name="importForm" action="import.php" method="POST" enctype="multipart/form-data"> <input type="hidden" value="import_goods" name="file"&

  • PHP使用PHPExcel实现批量上传到数据库的方法

    此例子只使用execel2003的.xls文档,若使用的是其他版本,可以保存格式为"Execel 97-2003 工作簿(*.xls)"即.xls文件类型即可! 功能说明:只能上传Excel2003类型的xls文件,大小不超过5M.可下载例子模板添加数据后即可上传! 前台test.php页面 <!DOCTYPE html> <html> <head> <title></title> </head> <meta

  • Thinkphp5+PHPExcel实现批量上传表格数据功能

    1.首先要下载PHPExcel放到vendor文件夹下,我的路径是:项目/vendor/PHPExcel/,把下载的PHPExcel文件放在这里 2.前端代码 <!DOCTYPE html> <html> <head> <title>批量导入数据</title> </head> <body> <form action="{:url('/index/index/importExcel')}" met

  • jQuery利用FormData上传文件实现批量上传

    在项目中涉及题库的批量上传功能,在此利用formdata进行文件上传,后台读取,进行批量插入.同时还需要带入teacherId和courseId两个参数,所以将文件和两个参数append到formdata中,传到后台. JQuery 函数的提交按钮执行的函数如下: <script type="text/javascript"> //批量上传题库 function fileSubmit() { var questionFile = new FormData(); var fi

  • java进阶解析Springboot上传excel存入数据库步骤

    目录 一.导入依赖 二.前端实现 三.后台逻辑 三.页面效果 四.可能会遇到的问题 一.导入依赖 这里还是用了Apache的POI插件,现在一般的springboot解析excel基本都用它 . <!-- 文件上传,解析文件需要的依赖--> <!--poi对excel2007以上版本的支持--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml&l

  • ASP.NET插件uploadify批量上传文件完整使用教程

    uploadify批量上传文件完整使用教程,供大家参考,具体内容如下 1.首先准备uploadify的js文件,网上一搜一大堆 2.上传页面UpFilePage.aspx 关键代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/h

  • asp.net上传文件到数据库的解决方案

    现在,我们来看存放文件的数据库表结构,这里,我们给出建立表的标准SQL语句: CREATE TABLE tblBooksUpload ( DocID int NOT NULL IDENTITY Primary Key , DocTitle varchar (200) , Doc image, DocType varchar (50) , Entrydate datetime Default GetDate() ) 以上的语句中,我们看到数据表tblBooksUpload包含五个字段: ·字段Do

  • JS实现批量上传文件并显示进度功能

    今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊. 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是自己想要的.然后自己查阅各种资料,经过自己总结,最终完成了这个功能. 如果大家有什么问题可以提出来,一起交流,学习.有什么不对的地方也指出来,我也虚心学习.自己也是刚写博客,您们的赞是我写博客的动力,谢谢大家. 条件:我采用struts2,java ,ajax,FormData实现; 1.实现的逻辑

  • SpringMVC+Ajax实现文件批量上传和下载功能实例代码

    今天做了文件的上传下载,小小总结一下,基本的web项目建立及SpringMVC框架搭建此处不详细写出来了. 上传form: <form id="uploadfiles" enctype="multipart/form-data"> <input type="file" multiple="multiple" id="file_upload" name="file_upload&q

  • php + WebUploader实现图片批量上传功能

    一.webuploader webuploader主要用来做文件的上传,支持批量上传和图片预览,图片预览是将图片生成base64数据直接在标签中使用,所以能够达到的效果是未真正上传图片可以先看到上传的效果.更多具体的介绍,可以上webuploader的官方网址看,我一直认为,看官网文档是学习最直接的途径. webuploader官方网站,顺带一提,webuploader是由Baidu Fex Team团队进行维护的. 二. webuploader上传原理 1. PHP+HTML表单上传文件 在讲

随机推荐