(codeigniter)从文件到mysql数据库添加多行数据?

时间:2014-09-25 16:59:19

标签: mysql codeigniter

是否可以从文件中获取数据,然后将其添加到我的数据库中的mysql中。我正在使用codeigniter。我的代码只询问用户的输入。请帮忙。我的教授要求这样,如果用户想输入例如100个数据,他/她不会手动输入数据,从而从另一个数据库中获取数据。

我的观看页面

        <!DOCTYPE html>

              <html lang="en">
                <head>
                   <meta charset="utf-8">
                <title>Students</title>


</head>

<body>
                   <div id="container">
                      <h1>Student's Page</h1>
                         <div id="body">   
                     <div id="div2">


                <?php

                echo form_open('main/addToRegistrar');
                ?>



                <br>





                <?php


                echo "<p>ID: ";
                echo form_input('id');
                echo "</p>";

                echo "<p>First Name: ";
                echo form_input('first_name');
                echo "</p>";

                echo "<p>Middle Name: ";
                echo form_input('middle_name');
                echo "</p>";

                echo "<p>Last Name: ";
                echo form_input('last_name');
                echo "</p>";





                echo "<p>";
                echo form_submit('ADD', 'ADD');
                echo "<p>"; 


                echo form_close();



                   ?>
                        <a href='<?php echo base_url()."main/admin"; ?>'>Home!</a>
                       </div>




                      </div>
                <p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds </p>
                    </div>
           </body>
         </html>

我的控制器

       public function addToRegistrar(){
            if($this->session->userdata('is_logged_in')){
        $this->load->model('model_users');
        $this->model_users->addToRegistrar();
        $this->load->view('view_addAteneoStudents');
    } else{
        redirect('main/restricted');
    }
      }

我的模特

       public function addToRegistrar(){
                  $fname = $this->input->post('first_name');
                  $mname = $this->input->post('middle_name');
                  $lname = $this->input->post('last_name');
                  $id = $this->input->post('id');

                    $data = array(
                         'id' =>  $id,
                         'first_name' => $fname ,
                         'middle_name' => $mname ,
                         'last_name' => $lname
                                 );

                        if($this->db->insert('registrar', $data)){
                        echo "Successfully added";
                      } 
                        }

1 个答案:

答案 0 :(得分:1)

您必须选择上传文件(推荐使用csv)并将其上传到您的服务器。这是一个快速的方法:

视图:

<html>
<body>

<form action="<?php echo base_url();?>" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html> 

控制器:

public function addToRegistrar()
{
    if($this->session->userdata('is_logged_in')){
        $this->load->model('model_users');
        $this->model_users->addToRegistrar();
        $this->load->view('view_addAteneoStudents');
    } else{
        redirect('main/restricted');
    }
}

模型:

function addToRegistrar()
{
  if ($_FILES["file"]["error"] > 0) {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
  } else {
    if (file_exists("upload/" . $_FILES["file"]["name"])) {
      echo $_FILES["file"]["name"] . " already exists. ";
    } else {
      $filename = "upload/" . $_FILES["file"]["name"];
      move_uploaded_file($_FILES["file"]["tmp_name"], $filename);

      //parse the uploaded file and insert to database
      $header = NULL;
      $data = array();
      if (($handle = fopen($filename, 'r')) !== FALSE)
      {
        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
        {
            if(!$header)
                $header = $row;
            else
                $data[] = $row;
        }
        $this->db->insert_batch('registrar', $data);
        fclose($handle);
      }
    }
  }
}

注意:您的csv文件应与数据库表'registrar'具有相同的列数。

有关阅读csv文件的更多信息here