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

友情提示:上传数据的文档需要转化为.csv格式" title="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格式)的案例 的全部内容, 来源链接: utcz.com/z/324836.html

回到顶部