使用Codeigniter从数据库表中查看文件

时间:2013-02-21 14:42:07

标签: php database

我正在尝试查看从数据库中获取的图像文件,我不知道为什么在加载视图时我得到一个未定义的变量。

我只是想查看存储在数据库图像中的图像名。 任何帮助都会非常感谢你。

以下是我在浏览器中查看时收到的错误

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>

1 个答案:

答案 0 :(得分:0)

您没有正确地将数据传递到您的视图。

你有这个:$this->load->view('layouts/home', $foldername, $imagename, array('error' => ' ' ));

您的第二个参数应该是要传递给视图的数据数组。尝试这样的事情:

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

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

请查看CodeIgniter documentation了解详情。