2016-03-02 3 views
0

У меня есть запрос в моей модели, что мне нужно, чтобы напечатать данные, на мой взглядПравильный способ показать мой запрос

Модель

function get_bank() 
    { 
     $query = $this->db->query("SELECT 
(
    12* (YEAR('account_add_date') - YEAR('start_date')) + 
      (MONTH('account_add_date') - MONTH('start_date')) 
) AS differenceInMonth 
->FROM ('bank') 
WHERE mem_id = '".$this->session->userdata('id')."'"); 
return $query->result(); 
    $data['account_age'] = $query->row_array(); 

    } 

и я пытаюсь напечатать вывод в моем но он не работает, и я не знаю, где я ошибся. Я новичок в MVC и до сих пор привык к этому.

Посмотреть

<h2>age of account</h2> 

<?php 
$age = $this->model('profiles_model' , $data); 

print "<h2>$age</h2>"; 

?> 

Контроллер

function index() 
    { 
     $data = array(); 
     $this->load->model('user_profile/profiles_model'); 
     $query = $this->profiles_model->get_bank(); 


     if(!empty($query)) 
     { 
      $data['records'] = $query; 
     } 

     $this->load->view('profile_view', $data); 
    } 
+1

Это get_bank() метод не возвращать ничего , Это предназначено? – DaSourcerer

+0

, так что я должен назвать get_bank в моем представлении $ this-> model ('get_bank')?, Односекционное обновление моего вопроса – Beep

+0

Используете ли вы среду MVC? – SamA

ответ

6

Давайте сначала написать код в соответствующую конвенцию.

Модель

function get_bank() { 
    $mem_id = $this->session->userdata('id'); 
    $query = $this->db 
     ->select("12*(YEAR('account_add_date') - YEAR('start_date')) + (MONTH('account_add_date') - MONTH('start_date')) AS differenceInMonth") 
     ->where('mem_id', $mem_id) 
     ->get('bank'); 

    return $query; 
    // $data['account_age'] = $query->row_array(); <-- Statement after return is useless. 
} 

Контроллер

function index() { 
    $data = array(
     'records' => array() 
    ); 
    $this->load->model('user_profile/profiles_model'); 
    $bank = $this->profiles_model->get_bank(); 

    if($bank->num_rows()){ 
     $data['records'] = $bank->row_array(); 
    } 

    $this->load->view('profile_view', $data); 
} 

Просмотр

Не уверен, что вы пытаетесь сделать с банковскими данными, но вот как напечатать запись

<p>Bank data</p> 
<p><?=isset($records['differenceInMonth'])?$records['differenceInMonth']:"No record found"?></p> 
+0

спасибо, я попробую это – Beep

+0

@Beep Удалена строка из модели. –

+0

Я не уверен, действительно ли нужна итерация в представлении. Кажется, что будет один результат в лучшем случае, если я правильно понял. – DaSourcerer

0

При загрузке вид вы передаете в $data с $data['records'], который имеет данные, которые вы желаете, чтобы отобразить.

Так что, как вы передать данные в поле зрения, когда вы загружаете его вам нужно будет назвать это таким образом:

<?php 
    var_dump($records); 
?> 

Вам также потребуется перебрать данных, а также при условии $ записи является массив результатов запроса или используйте var_dump вместо печати только для проверки наличия данных.

Читая это поможет идти вперед:

https://codeigniter.com/user_guide/general/views.html https://codeigniter.com/user_guide/general/models.html

2

Вы не являетесь т далеко, сделать это таким образом:

Контроллер:

function index() 
    { 

     $this->load->model('user_profile/profiles_model'); 
     $data = $this->profiles_model->get_bank(); 

     $this->load->view('profile_view', $data); 
    } 

Модель:

function get_bank() 
    { 
     $query = $this->db->query("SELECT 
      (
      12* (YEAR('account_add_date') - YEAR('start_date')) + 
       (MONTH('account_add_date') - MONTH('start_date')) 
      ) AS differenceInMonth 
     ->FROM ('bank') 
      WHERE mem_id = '".$this->session->userdata('id')."'"); 

     return $query->result(); 
    } 

Вид:

<?php 

foreach(differenceInMonth AS $age){ 

    echo "<p>" . $age . "</p>"; 

} 
+0

Спасибо, человек, просто попробовав один из ранних ответов, но если эта доза не работает, попробуйте этот +1 – Beep

Смежные вопросы