Требуется помощь mysql + php запрос

Romaldo
На сайте с 10.02.2008
Offline
185
520

Имеется модуль выводящий " новые сообщения" для юзера.

Если их нет - пишет нет. Если есть пишет сколько их.

Функция получения данных такая:

function getNotificationsMSG()

{

$db =& JFactory::getDBO();

$user =& JFactory::getUser();

$query = " SELECT

*

FROM

".$db->nameQuote('#__community_msg_recepient')."

WHERE

".$db->nameQuote('is_read')."=".$db->quote(0)."

AND

".$db->nameQuote('to')."=".$db->quote($user->id);

$db->setQuery( $query );

$db->query();

$result = $db->getNumRows();

if($db->getErrorNum())

{

JError::raiseError( 500, $db->stderr());

}

return $result;

Проблема заключается в том, что если юзео не читает сообщение, а просто удаляет, происходит запись в этой же таблице в колонку deleted. Соответственно сообщение остается непрочитанным, и все время показывается как "новое".

Выглядит так:

msg_id msg_parent msg_from to bcc is_read deleted

35 35 2143 1850 0 0 1

36 36 62 62 0 0 1

Эти 2 сообщения не прочитаны, но удалены - показываются как новые.

Нужно в функции добавить условие если is_read=0 а deleted=1 то is_read=1

Не знаю синтаксис...

InoHacker
На сайте с 18.10.2009
Offline
75
#1
romagromov:

Нужно в функции добавить условие если is_read=0 а deleted=1 то is_read=1
Не знаю синтаксис...

Может так попробовать:

is_read = is_read ? delete : is_read

Почитай тут

Магазин аккаунтов с балансом Litres,DNS,Ozon,Rotapost и еще 50+ других сервисов тут - vk.cc/7QK0Sk
aleksey_php
На сайте с 17.03.2008
Offline
53
#2

Пользуйтесь

$query = " SELECT

*
FROM
".$db->nameQuote('#__community_msg_recepient')."
WHERE
".$db->nameQuote('is_read')."=".$db->quote(0)."
AND
".$db->nameQuote('deleted')."=".$db->quote(0)."
AND
".$db->nameQuote('to')."=".$db->quote($user->id);
[Удален]
#3

у кода жумлы ужасный стиль ... то есть эта каша не имеет стиля ..

Romaldo
На сайте с 10.02.2008
Offline
185
#4

aleksey_php,

да - это работает, просто синтаксис не знаю, буду учить.

bearman, это не код джумлы, это код стороннего расширения, для еще одного стороннего компонента... Да и потом, эта каша работает... Придаст ли стиль этой каше, что-нибудь еще, кроме стиля? Просто интересно?

[Удален]
#5

romagromov, ds ничерта не понимаете в программировании :)

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

в общем этот компонент - говнокод ... :)

+ отсутствует форматирвоание всяческое, хотя это может быть вина вашегго копипаста неаккуратного :)

Romaldo
На сайте с 10.02.2008
Offline
185
#6

bearman, я просто не могу понять, работать будет как-то по-другому? Быстрее, медленнее?

Я понимаю алгоритм происходящего, не могу понять, в чем изящество должно заключаться... В синтаксисе?

Требуется просто получить количество новых, непрочитанных сообщений... Вроде все ясно...

Как должен выглядеть код этой функции?

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