PHP头条
热点:

php如何批量上传数据到数据库(.csv格式)


上传数据的文档需要转化为.csv格式的文档

前端代码:


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格式)的案例就是小编分享给大家的全部内容了,希望能给大家一个参考

www.phpzy.comtrue/php/27989.htmlTechArticlephp如何批量上传数据到数据库(.csv格式) 上传数据的文档需要转化为.csv格式的文档 前端代码: 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/...

相关文章

    暂无相关文章

PHP之友评论

今天推荐