0

データベースから取得した画像ファイルを表示しようとしていますが、ビューをロードするときに未定義の変数を取得する理由がわかりません。

ほとんどの場合、データベース イメージに保存されているイメージ名を表示しようとしています。どんな助けでもありがとう。

ブラウザで表示するときに表示されるエラーは次のとおりです

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: imagename
Filename: layouts/home.php
Line Number: 8
A PHP Error was encountered
Severity: Warning
Message: Invalid argument supplied for foreach()
Filename: layouts/home.php
Line Number: 8

これが私のコントローラーです

class Home extends CI_Controller {

function __construct()
{
    parent::__construct();
    $this->load->library('upload');

}
  function index() {
    $this->load->model('index_model');
    $foldername['foldername'] = $this->index_model->getFoldernames();
    $imagename['imagename'] = $this->index_model->getImagenames();

    $this->load->view('layouts/home', $foldername, $imagename, array('error' => ' ' ));
  }

function create() {
   if(array_key_exists('createFolder',$_POST)){
     $data = array(
       'folderName' => $this->input->post('folderName')
   );
    $data = str_replace(' ', '_', $data);
    $this->index_model->createFolder($data);
  }
  $this->foldercreated();
}

function delete() {
  $this->load->model('index_model');
  $foldername['foldername'] = $this->index_model->getFoldernames();
  $this->load->view('layouts/delete', $foldername);
}

function deleteFolder() {
   if($this->input->post('checkbox') !== false) {
   $checkbox = $this->input->post('checkbox');
   $this->index_model->deleteFolder($checkbox);
  }
 $this->folderdeleted();
}

function foldercreated() {
  $this->load->view('partials/foldercreated');
}

function folderdeleted() {
  $this->load->view('partials/folderdeleted');
}

function do_upload() {
  $config['source_image'] = $this->upload->upload_path.$this->upload->file_name;
  $config['upload_path'] = './uploads/';
  $config['allowed_types'] = 'gif|jpg|png';
  $config['max_size'] = '0';
  $config['max_width']  = '0';
  $config['max_height']  = '0';
  $this->upload->initialize($config);
  $this->load->library('upload', $config);

  if ( !$this->upload->do_upload('userfile'))
     {
      // echo  '<p>IMAGE NOT WORKING</p>'. '<br/><p>' . $this->upload->display_errors() .      '</p>';
     $uploadError = $this->upload->display_errors();
     $this->load->view('partials/upload_error', $uploadError);
    }
  else
   { 
    // $imagefile = array('upload_data' => $this->upload->data());
     $upload_data = $this->upload->data();

     $db_data = array('imageName' => $upload_data['file_name']);
     $this->index_model->addImage($db_data); // replace the tablename

     $this->load->view('partials/upload_success', $db_data);

   }
 }
}

これが私のモデルです

  function getFolderNames() {
    $this->db->order_by('id', 'DESC');
    $this->db->select('folderName');
    $q = $this->db->get('senior');

    if($q->num_rows() > 0) {
        foreach ($q->result() as $row) {
          $data[] = $row;
        }
       return $data;
    }
  }

  function getImagenames() {
    $this->db->order_by('id', 'DESC');
    $this->db->select('imageName');
    $query = $this->db->get('images');

    if($query->num_rows() > 0) {
        foreach ($query->result() as $row) {
          $data[] = $row;
       }
     return $data;
    }
  }

そして、これが私の見解です

 <div id="imagefiles">
    <?php 
       foreach ($imagename as $img) { ?>
          <div><?php echo $img->imageName; ?></div>
    <?php } ?>
 </div>
4

1 に答える 1

0

ビューにデータを正しく渡していません。

あなたはこれを持っています:$this->load->view('layouts/home', $foldername, $imagename, array('error' => ' ' ));

2 番目のパラメーターは、ビューに渡したいデータの配列である必要があります。次のようなことを試してください:

$data['foldername'] = $this->index_model->getFoldernames();
$data['imagename'] = $this->index_model->getImagenames();

$this->load->view('layouts/home', $data);

詳細については、 CodeIgniter のドキュメントを確認してください。

于 2013-02-21T15:14:23.763 に答える