Не могу правильно получить данные из базы. Помогите пожалуйста.

J2
На сайте с 13.12.2011
Offline
46
367

Здравствуйте уважаемые. Помогите разобраться. Есть таблица в базе такого вида

Это таблица с личными сообщениями пользователей. Когда я вывожу данные из базы то выводятся все сообщения переписки которые адресованы конкретному пользователю. т.е. мне отправили сообщение я на него ответил, мне еще раз ответили и теперь у меня во входящих сообщениях 2 сообщения одной переписки. Мне нужно что бы было только одно последнее. Не могу понять как это сделать. Уже и массив перебирать пробовал. Данный код такого вида:

Модель запросов к базе:


defined('InShopNC') or exit('Access Invalid!');
class messageModel extends Model{
public function __construct(){
parent::__construct('message');
}
public function listMessage($condition,$page='') {
$condition_str = $this->getCondition($condition);
$param = array();
$param['table'] = 'message';
$param['where'] = $condition_str;
$param['order'] = 'message.message_id DESC';
$message_list = Db::select($param,$page);
return $message_list;
}
}

Обращение к модели:


public function messageOp() {
Language::read('member_home_message');
$model_message = Model('message');
$page = new Page();
$page->setEachNum(10);
$page->setStyle('admin');
$message_list_array = $model_message->listMessage(array('message_type'=>'0','to_member_id_common'=>$_SESSION['member_id'],'no_message_state'=>'2'),$page);
Tpl::output('message_array',$message_list_array);
Tpl::showpage('message_box');
}

При таком запросе у меня выводится следующее:

Это переписка одной темы, должно быть одно последнее сообщение. Подскажите как сделать уже голову сломал.

https://mallinru.ru/ (https://mallinru.ru/)
Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

добавить limit 1 ?

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
J2
На сайте с 13.12.2011
Offline
46
#2
Оптимизайка:
добавить limit 1 ?

Не понял куда добавить. Покажите пожалуйста на примере?

R2
На сайте с 25.08.2010
Offline
50
#3

SELECT * FROM TABLE WHERE NAME=ADMIN LIMIT 1 order by DATETIME ASC 

Получаем данные с таблицы "TABLE" | выборка по полю "NAME" c значением ADMIN | берем 1 запись | сортировка по полю DATETIME (ASC|DESC)

J2
На сайте с 13.12.2011
Offline
46
#4
reset2:
SELECT * FROM TABLE WHERE NAME=ADMIN LIMIT 1 order by DATETIME ASC 

Получаем данные с таблицы "TABLE" | выборка по полю "NAME" c значением ADMIN | берем 1 запись | сортировка по полю DATETIME (ASC|DESC)

А как мне это реализовать в моем коде? Просто я новичок и много не знаю.

R2
На сайте с 25.08.2010
Offline
50
#5



defined('InShopNC') or exit('Access Invalid!');
class messageModel extends Model{
public function __construct(){
parent::__construct('message');
}
public function listMessage($condition,$page='') {
$condition_str = $this->getCondition($condition);
$param = array();
$param***91;'table'***93; = 'message';
$param***91;'where'***93; = $condition_str;
$param***91;'order'***93; = 'message.message_id DESC limit 1';
$message_list = Db::select($param,$page);
return $message_list;
}
}


J2
На сайте с 13.12.2011
Offline
46
#6
reset2:


defined('InShopNC') or exit('Access Invalid!');
class messageModel extends Model{
public function __construct(){
parent::__construct('message');
}
public function listMessage($condition,$page='') {
$condition_str = $this->getCondition($condition);
$param = array();
$param***91;'table'***93; = 'message';
$param***91;'where'***93; = $condition_str;
$param***91;'order'***93; = 'message.message_id DESC limit 1';
$message_list = Db::select($param,$page);
return $message_list;
}
}


Ошибку выдает и ничего не отображается

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in X:\home\test1.ru\subdomain\core\framework\db\mysqli.php on line 201

R2
На сайте с 25.08.2010
Offline
50
#7


defined('InShopNC') or exit('Access Invalid!');
class messageModel extends Model{
public function __construct(){
parent::__construct('message');
}
public function listMessage($condition,$page='') {
$condition_str = $this->getCondition($condition);
$param = array();
$param***91;'table'***93; = 'message';
$param***91;'where'***93; = $condition_str;
$param***91;'order'***93; = 'message.message_id DESC'; // тут ASC или DESC
$param***91;'limit'***93; = '1';
$message_list = Db::select($param,$page);
return $message_list;
}
}



Попробуйте так. Не работал с фреймворками могу и ошибаться.

J2
На сайте с 13.12.2011
Offline
46
#8
reset2:

defined('InShopNC') or exit('Access Invalid!');
class messageModel extends Model{
public function __construct(){
parent::__construct('message');
}
public function listMessage($condition,$page='') {
$condition_str = $this->getCondition($condition);
$param = array();
$param***91;'table'***93; = 'message';
$param***91;'where'***93; = $condition_str;
$param***91;'order'***93; = 'message.message_id DESC'; // тут ASC или DESC
$param***91;'limit'***93; = '1';
$message_list = Db::select($param,$page);
return $message_list;
}
}





Попробуйте так. Не работал с фреймворками могу и ошибаться.

Все равно два сообщения выводится

---------- Добавлено 17.09.2014 в 10:59 ----------

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий