0

codeigniter について質問があります。do_upload の Excel ファイルに引数がないのはなぜですか。ローカルホストでは機能しますが、Linux サーバーにコピーした後、次のようなエラーが発生します。

PHP エラーが発生しました。数:32

このコードで何が欠けていますか?

ここに私のビューコードがあります:

<center>
</br>
</br>
<?php  echo form_open_multipart('chapter') . "\n"; ?>
<table>
  <tr>
  <td><input type="file" id="file_upload" name="userfile" size="20" /></td>
   <td valign="top" >
   <?php echo form_submit('submit', 'Upload'); ?></td>
 </tr>
</table>
<?php echo form_close(); ?>
<?php
if ($this->session->flashdata('msg_excel')){
?>
<div class="msg"><?php echo $this->session->flashdata('msg_excel'); ?></div>
<?php } ?>
</br>
</br>
</div>
</center>

マイコントローラー:

<?php
class Chapter extends CI_Controller {
 function __construct()
 {
   parent::__construct();
   $this->load->model('Querypage');
   $this->load->model('m_login');
   $this->load->helper(array('form', 'url', 'inflector'));
   $this->load->library('form_validation');
 }
 public function index()
 {
       if ($this->input->post('submit'))
       {   
$this->do_upload();
        $this->load->view('chapter');
}
  else
  {
   $this->load->model('m_jadwal','',TRUE);
   $user = $this->session->userdata('username');
   $data['pengguna'] = $this->m_login->dataPengguna($user);
   $data['kdsmtaktif'] = $this->m_login->smtaktif();
   $this->load->view('aka_v', $data);
   $this->load->view('chapter');
  }
 }

public function do_upload()
{
    $config['upload_path'] = './temp_upload/';
    $config['allowed_types'] = 'xls';

    $this->load->library('upload', $config);

     if ( ! $this->upload->do_upload())
     {
            $data = array('error' => $this->upload->display_errors());
            $this->session->set_flashdata('msg_excel', 'Gagal Memasukkan data. Cek file anda, hanya .xls yang diperbolehkan.');
     }
     else
     {
            $data = array('error' => false);
            $upload_data = $this->upload->data();

            $this->load->library('excel_reader');
            $this->excel_reader->setOutputEncoding('CP1251');

            $file =  $upload_data['full_path'];
            $this->excel_reader->read($file);
            error_reporting(E_ALL ^ E_NOTICE);

            // Sheet 1
            $data = $this->excel_reader->sheets[0] ;
            $dataexcel = Array();
            for ($i = 8; $i <= $data['numRows']; $i++) {
               if($data['cells'][$i][1] == '') break;
               $dataexcel[$i-1]['data1'] = $data['cells'][$i][1];
             $dataexcel[$i-1]['data2'] = $data['cells'][$i][2];      
            $dataexcel[$i-1]['data3'] = $data['cells'][$i][3];
            }
    //cek data
    $check= $this->Querypage->search_chapter($dataexcel);
    if (count($check) > 0)
    {
      $this->Querypage->update_chapter($dataexcel);
      // set pesan
      $this->session->set_flashdata('msg_excel', 'update data success');
  }else{
      $this->Querypage->insert_chapter($dataexcel);
      // set pesan
      $this->session->set_flashdata('msg_excel', 'inserting data success');
  }
  }
        echo " <script>
            history.go(-2);
          </script>";
  }
}
?>
4

2 に答える 2

0

コントローラーの変更で:

public function do_upload($user, $kdsmt)  //on line 32

に:

public function do_upload()

メソッドでどちらのパラメーターも使用していないため、それらを使用する必要はありません。さらに重要なことは、関数で params を宣言していて、それらにデフォルト値を与えていない場合、それらに何も渡さないと、PHP はエラーになります。

お役に立てれば!

于 2014-11-25T09:33:36.433 に答える
0

交換 :

$this->upload->do_upload()

に :

$this->upload->do_upload("userfile")

userfileファイル入力の名前はどこにありますか。

CodeIgniter のアップロード: https://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html

于 2014-11-25T14:20:08.617 に答える