Я немного запутался по этому поводу …
Я создаю просто простой блог, и я не могу получить желаемый результат из поста, все, что я хотел, — я хочу получить имя и фамилию из второй таблицы, используя userID
с первого стола.
Контроллеры / posts.php:
<?php
class Posts extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('post');
}
function index() {
$data['posts'] = $this->post->get_posts();
$data['users'] = $this->post->get_users();
$this->load->view('post_index', $data);
}
function post($postID) {
$data['post'] = $this->post->get_post($postID);
$this->load->view('post', $data);
}
function correct_permissions($required) {
$user_type = $this->session->userdata('user_type');
if ($required == "User") {
if ($user_type) {
return true;
}
} elseif ($required == "Blogger") {
if ($user_type == "Blogger") {
return true;
}
}
}
function deletepost($postID) {
$user_type = $this->session->userdata('user_type');
if ($user_type != 'Blogger') {
echo "<script>alert:('Please log in to continue.');</script>";
redirect(base_url());
}
$this->post->delete_post($postID);
redirect(base_url() . 'posts');
}
}
модели / post.php
<?php
class Post extends CI_Model{
function get_posts($num=50,$start=0){
$this->db->select()->from('posts')->where('active',1)->order_by('date_added','desc')->limit($num,$start);
$query = $this->db->get();
return $query->result_array();
}
function get_post($postID){
$this->db->select()->from('posts')->where(array('active'=>1,'postID'=>$postID))->order_by('date_added','desc');
$query=$this->db->get();
return $query->first_row('array');
}
function get_user($userID){
$this->db->select()->from('users')->where(array('userID'=>$userID));
$query=$this->db->get();
return $query->first_row('array');
}
function get_users(){
$userID = $this->session->userdata('userID');
$this->db->select('firstname','lastname')->from('users')->where('userID',$userID);
$query = $this->db->get();
return $query->result_array();
}
function insert_post($data){
$this->db->insert('posts',$data);
return $this->db->insert_id();
}
function update_post($postID,$data){
$this->db->where('postID',$postID);
$this->db->update('posts',$data);
}
function delete_post($postID){
$this->db->where('postID',$postID);
$this->db->delete('posts');
}
}
и мой код из views / post_index.php
<div class="panel">
<?php if (!isset($posts)) { ?>
<p>There are currently no posts on my blog.</p>
<?php
} else {
foreach ($posts as $row) {
?>
<div class="panel-heading">
<h2 href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>"><?= $row['title'] ?></h2>
</div>
<div class="panel-body">
<p><?= substr(strip_tags($row['post']), 0, 200) . "..." ?></p>
<br><br>
<div class="panelver">
<h6 href="<?= base_url() ?>posts/post/<?= $row['userID'] ?>">Posted by:
<?php
if($row['userID'] == 0) {
echo "Someone";
} else {
echo $this->db->select('firstname','lastname')->from('users')->where('userID',$row['userID']);
}
?></h6>
<p href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>">Added last: <?= $row['date_added'] ?></p>
</div>
<p><a href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>">Read More</a> - - - <a href="<?= base_url() ?>edit/editpost/<?= $row['postID'] ?>">Edit</a> | <a href="<?= base_url() ?>posts/deletepost/<?= $row['postID'] ?>">Delete</a></p>
<hr/>
</div>
<?php
}
}
?>
</div>
выход:
Blog Posts
это пост
бла, бла, бла ….. «сообщение от:» должно выводить имя автора, получая идентификатор пользователя из второго значения таблицы, используя идентификатор пользователя из первой таблицы в качестве вывода ниже, помогите мне! T_T …
Автор: 2
Добавлено последнее: 20.09.2014 11:30:00
Читать дальше — — — Редактировать | удалять
но когда я делаю этот код:
<div class="panel">
<?php if (!isset($posts)) { ?>
<p>There are currently no posts on my blog.</p>
<?php
} else {
foreach ($posts as $row) {
?>
<div class="panel-heading">
<h2 href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>"><?= $row['title'] ?></h2>
</div>
<div class="panel-body">
<p><?= substr(strip_tags($row['post']), 0, 200) . "..." ?></p>
<br><br>
<div class="panelver">
<h6 href="<?= base_url() ?>posts/post/<?= $row['userID'] ?>">Posted by:
<?php
if($row['userID'] == 0) {
echo "Someone";
} else {
echo $this->db->select('firstname','lastname')->from('users')->where('userID',$row['userID']);
}
?></h6>
<p href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>">Added last: <?= $row['date_added'] ?></p>
</div>
<p><a href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>">Read More</a> - - - <a href="<?= base_url() ?>edit/editpost/<?= $row['postID'] ?>">Edit</a> | <a href="<?= base_url() ?>posts/deletepost/<?= $row['postID'] ?>">Delete</a></p>
<hr/>
</div>
<?php
}
}
?>
</div>
это произойдет:
Сообщения в блоге
это пост
бла, бла, бла ….. «сообщение от:» должно выводить имя автора, получая userID из второго значения таблицы, используя userID из первой таблицы в качестве вывода ниже, помогите мне! T_T …
Сообщение от:
Обнаружена ошибка PHP
Серьезность: 4096
Сообщение: объект класса CI_DB_mysql_driver не может быть преобразован в строку
Имя файла: views / post_index.php
Номер строки: 42
Добавлено последнее: 20.09.2014 11:30:00
Читать дальше — — — Редактировать | удалять
Надеюсь, вы все понимаете структуру моего кода, более полезная помощь будет очень полезна.
Бог всех вас!
П.С .: Я нубский программист и новичок в CodeIgniter 🙂
Итак, что я понял из вашего вопроса, так это то, что у вас есть две таблицы с userId, хранящимися в одной, и пользовательские данные в другой. Поэтому попробуйте это, так как вам нужно получить строку перед ее отображением.
echo $this->db->select('firstname','lastname')->from('users')->where('userID',$row['userID'])->get()->row();
вышеприведенный код также можно записать так:
$this->db->select('firstname','lastname')->where('userID',$row['userID'])->get('users')->row();
Дайте мне знать, если у вас есть какие-либо сомнения.
Других решений пока нет …