2013-02-21 2 views
0

Я пытаюсь просмотреть мои файлы изображений, взятые из базы данных, и я понятия не имею, почему я получаю неопределенную переменную при загрузке моего представления.Просмотр файлов из таблиц базы данных с помощью Codeignitor.

Практически я просто пытаюсь просмотреть изображения, хранящиеся в изображениях моей базы данных. Любая помощь будет большой спасибо.

Вот ошибки, которые я получаю при просмотре в браузере

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> 
+0

Просмотрите, как [отправить данные на ваш просмотр] (http://ellislab.com/codeigniter/user-guide/general/views.html). '$ this-> load-> view ('layouts/home', $ foldername, $ imagename, array ('error' => ''));' не отправляет '$ imagename'. –

ответ

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 для получения дополнительной информации.