虚位以待(AD)
虚位以待(AD)
首页 > 网络编程 > PHP编程 > php实现批量上传数据到数据库(.csv格式)的案例

php实现批量上传数据到数据库(.csv格式)的案例
类别:PHP编程   作者:码皇   来源:互联网   点击:

下面小编就为大家带来一篇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格式)的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关热词搜索: php 上传csv