Проблема Foreach в контроллере - CodeIngiter - PullRequest
0 голосов
/ 21 марта 2020

Контроллер 'Фото':

public function seePics(){
        // in $res, i have all the pictures in my table 'photo' (id, id_photograph, title, size...)
        $res = $this->Photo_model->readPhoto();

        // with the session, i have all the data that i need on the connected user
        $this->load->library('session');
        $data = $this->session->userdata('data');

        // user id
        $idUser = $data['id'];

        // here, i want to have only the picture of the connected user
        if(!sizeof($res) == 0){
            foreach($res as $item){
                if($item->id_user == $idUser){
                    $values['photo'] = $item;
                    $this->load->view('photo/voirPhoto', $values);
                }       
            }
        }
        else{
            $this->load->view('photo/aucunePhoto',$data);
        }
    }

Просмотр 'voirPhoto. php': как я отображаю данные

<div class="row">
  <div class="col-md-6">
    <label>Title</label>
  </div>
  <div class="col-md-6">
    <p><?php echo $photo->titre?></p>
  </div>
</div>

<div class="row">
  <div class="col-md-6">
    <label>Name</label>
  </div>
  <div class="col-md-6">
    <p><?php echo $photo->name?></p>
  </div>
</div>

Как вы можете видеть, мой foreach находится в моем контроллере , но я хочу сделать foreach на мой взгляд. Как я могу это сделать?

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

Заранее спасибо

1 Ответ

0 голосов
/ 21 марта 2020

Как сказал Виней, вы можете просто фильтровать пользователя в запросе внутри функции readPhoto. Например: $res = $this->Photo_model->readPhoto($idUser) и

public function readPhoto($idUser = null) 
{
    $query = "select * from photos " . (($idUser)? "where id_user = {$idUser}" : "");

    ...
}

Таким образом, у вас будут все фотографии подключенного пользователя.

Если вы sh поймаете только одну строку, вы можете использовать $ res [0] Я думаю или сначала в вашем запросе (зависит от базы данных).

...