首页 > 开发 > PHP > 正文

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

2024-05-04 22:47:02
字体:
来源:转载
供稿:网友

友情提示:上传数据的文档需要转化为.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('批量导入完成!');       }            }             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表