В основном я пытаюсь создать систему комментариев. Пользователь просматривает фотографию на сайте, а затем может просмотреть все комментарии других участников.
Каждый комментарий будет зацикливаться с использованием foreach (в настоящее время работает нормально), но мне нужно выполнить отдельный запрос для каждого комментария, чтобы получить сведения о пользователе, который его опубликовал. Эти данные хранятся в отдельной базе данных (в противном случае я бы просто сделал соединение).
Моя модель пока имеет это:
public function get_comment($id)
{
$db_photos = $this->load->database('photos', TRUE);
$db_photos->select('id, comment, userid, photoid');
$db_photos->from('comments');
$db_photos->where('photoid', $id);
return $db_photos->get()->result();
}
А вот и контроллер:
public function view($id)
{
$data['comment'] = $this->viewphoto_model->get_comment($id);
if (empty($data['comment'])) { show_404(); }
$this->load->view('templates/header', $data);
$this->load->view('viewphoto/viewphoto', $data);
$this->load->view('templates/footer', $data);
}
А потом вид:
<?php foreach ($comment as $comments): ?>
<div class="ViewPhoto-CommentsBox">
<? echo $comments->comment; ?>
</div>
<?php endforeach ?>
Так что в основном мне нужно извлечь значение 'userid' из каждого комментария, а затем выполнить запрос к базе данных 'users', чтобы получить сведения о пользователе для каждого опубликованного комментария.
Любая помощь наиболее ценится:)
EDIT:
Все еще не работает, вот последняя версия.
Контроллер:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Viewphoto extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('viewphoto_model');
}
public function view($id)
{
$data['photo'] = $this->viewphoto_model->get_photo($id);
if (empty($data['photo'])) { show_404(); }
$data['user'] = $this->viewphoto_model->get_user($data['photo']->userid);
if (empty($data['user'])) { show_404(); }
$comment = $this->viewphoto_model->get_comment($id);
if($comment->num_rows() > 0)
{
foreach ($comment->result() as $r)
{
$data['reg'][$i]['comment']=$r->comment;
$data['reg'][$i]['id']=$r->id;
// Get user details from user table
$user_profile = $this->viewphoto_model->get_comment_user($r->userid);
if($user_profile->num_rows() > 0)
{
foreach ($user_profile->result() as $row)
{
// user details whatever you have in your db.
$data['reg'][$i]['id']=$row->id;
$data['reg'][$i]['firstname']=$row->firstname;
$data['reg'][$i]['lastname']=$row->lastname;
}
}
$i++;
}
}
$data['title'] = $data['photo']->title.' by '.$data['user']->firstname.' '.$data['user']->lastname;
$data['meta_description'] = $data['photo']->description;
$data['directory'] = 'sub';
$this->load->view('templates/header', $data);
$this->load->view('viewphoto/viewphoto', $data);
$this->load->view('templates/footer', $data);
}
}
Модель:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Viewphoto_model extends CI_Model {
public function get_photo($id)
{
$db_photos = $this->load->database('photos', TRUE);
$db_photos->select('*');
$db_photos->select("DATE_FORMAT(uploaddate, '%d/%m/%y') as uploaddate_formatted", FALSE);
$db_photos->from('photos');
$db_photos->where('approved', '1');
$db_photos->where('id', $id);
return $db_photos->get()->row();
}
public function get_user($userid)
{
$db_users = $this->load->database('users', TRUE);
$db_users->select('id, firstname, lastname, email, type, type_staff, count_approved, count_sales, count_comments, count_editorial, featured, subscriber');
$db_users->from('useraccounts');
$db_users->where('id', $userid);
return $db_users->get()->row();
}
public function get_comment($id)
{
$db_photos = $this->load->database('photos', TRUE);
$db_photos->select('id, comment, userid, photoid');
$db_photos->from('comments');
$db_photos->where('photoid', $id);
return $db_photos->get()->result();
}
public function get_comment_user($userid)
{
$db_users = $this->load->database('users', TRUE);
$db_users->select('id, firstname, lastname');
$db_users->from('useraccounts');
$db_users->where('id', $userid);
return $db_users->get();
}
}
Просмотр:
<?php foreach ($reg as $comments): ?>
<div class="ViewPhoto-CommentsBox">
<? echo $comments['comment']; ?> by <? echo $comments['firstname'];?>
</div>
<?php endforeach ?>