找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1789|回复: 0
打印 上一主题 下一主题

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

[复制链接]

3444

主题

3465

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11142
跳转到指定楼层
楼主
发表于 2018-2-14 05:25:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            友情提示:上传数据的文档需要转化为.csv格式的文档
前端代码:


  
选择批量上传文档:

        
      


后端代码: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将数组转换成csv格式文件输出的方法
  • 完美解决php 导出excle的.csv格式的数据时乱码问题
  • 详解php几行代码实现CSV格式文件输出
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端