前端代码:
php" id="highlighter_145212">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<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文件(这里只粘贴主要代码,具体实现方法需自己完成)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
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格式)的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。