Pozdrav,
radim na chatu te trebam izvući sve sobe koje posjeduju nove poruke. Pomoću COUNT dobivam broj novih poruka za svaku sobu ali on jednostavno zbroji sve nove poruke i stavi ih u zadnju sobu
$result = $smcFunc['db_query']('', "
SELECT r.id_room, IF(r.first = {int:id_member}, r.second, r.first) AS room_member, COUNT(m.id_message) AS unread_total FROM {db_prefix}lgf_chat_rooms AS r
LEFT JOIN {db_prefix}lgf_chat_messages AS m ON (m.id_room = r.id_room)
WHERE (r.first = {int:id_member} OR r.second = {int:id_member}) AND (m.id_message > IF(r.first = {int:id_member}, r.first_unread, r.second_unread))",
array(
'id_member' => $context['user']['id'],
)
);
while($row = $smcFunc['db_fetch_assoc']($result)) {
$rooms[$row['id_room']] = array(
'room_member' => $row['room_member'],
'unread_messages' => $row['unread_total'],
);
}
polja first i second spremaju id korisnika sobe (znači 2 korisnika su maksimalno), polje first_unread sprema zadnju poruku koju je prvi korisnik pročitao, a second_unread za drugog
Trenutno je rezultat XML-a ovo:
<room id="5">
<name>Chrome</name>
<avatar></avatar>
<unread_messages>5</unread_messages>
</room>
a trebalo bi biti
<room id="2">
<name>Safari</name>
<avatar></avatar>
<unread_messages>3</unread_messages>
</room>
<room id="5">
<name>Chrome</name>
<avatar></avatar>
<unread_messages>2</unread_messages>
</room>
Svašta sam probao i jedino što mi preostaje je izvući svaku sobu i za svaku sobu pravit query ali to ne dolazi u obzir