Hallo,
ich habe gestern auf meinem lokalem Server ein neues Chatsystem integriert. An sich läuft dieser richtig gut, allerdings habe ich da doch ein kleines Problem. Und zwar habe ich nun private Nachrichten in diesem System integriert. (/p User:Text) Diese privaten Nachrichten werden auch wie die anderen Nachrichten in der 'commentary'-Tabelle gespeichert. So weit so gut, passt auf alles.
Nun zu meinem Problem: Daher die privaten Nachrichten auch mit im limit der Abfrage waren und diese für andere User nicht sichtbar waren, sah es schon sehr doof aus, wenn 9 private Nachrichten und nur eine normale Nachrichten zu 'sehen' waren. (Die Seite wird halt trotzdem damit berechnet.)
Daher habe ich mich dazu entschlossen 2 Abfragen durchzuführen. In der ersten Abfrage, frage ich 'limit' (Meistens nur 10) Nachrichten aus der Tabelle ab. (Öffentliche Nachrichten) Mit der zweiten Abfrage frage ich lediglich die privaten Nachrichten ab.
Die Abfragen führe ich dann in einem Array zusammen und lasse dieses Array mit ksort noch sortieren und mit array_unshift umgekehrt ausgeben.
Auch das funktioniert alles wunderbar. - Nur habe ich jetzt das Problem, dass sich nach gegebener Zeit (Sofern schon ein paar neue öffentliche Nachrichten gesendet wurden) die ganzen privaten Nachrichten im oberen Teil des Chats tummeln.
Meine Frage wäre: Wie bekomme ich es hin, das öffentliche und private Nachrichten zusammen abgefragt werden, allerdings nur die öffentlichen Nachrichten ausschlaggebend für die Seite sind? (Private Nachrichten sollen allerdings dann auch auf eine nächste Seite verschwinden sobald 10 öffentliche Nachrichten vorhanden sind.)
Hier mal der Auslese-code:
$this->bbcode_second_pass_code('', '$s = mysql_query('SELECT commentary.*,accounts.login,accounts.name,accounts.loggedin,accounts.location,accounts.laston
FROM commentary
INNER JOIN accounts ON accounts.acctid = commentary.author
WHERE section = "'.$this->section.'" AND accounts.locked = 0 AND priv = 0
ORDER BY commentid DESC
LIMIT 0,10');
$cCd = 0;
$comments = array();
while( $row = mysql_fetch_assoc($s) ) {
$i++;
$comments[$row['commentid']]['i'] = $row['commentid'];
$comments[$row['commentid']]['c'] = $row['comment'];
$comments[$row['commentid']]['p'] = $row['postdate'];
$comments[$row['commentid']]['iN'] = $row['isNpc'];
$comments[$row['commentid']]['iE'] = $row['isEmote'];
$comments[$row['commentid']]['iS'] = $row['isSys'];
$comments[$row['commentid']]['pR'] = 0;
$comments[$row['commentid']]['pT'] = '';
$comments[$row['commentid']]['pF'] = '';
$comments[$row['commentid']]['l'] = $row['login'];
$comments[$row['commentid']]['n'] = $row['name'];
$comments[$row['commentid']]['lO'] = $row['laston'];
$comments[$row['commentid']]['lI'] = $row['loggedin'];
}
$s = mysql_query('SELECT commentary.*,accounts.login,accounts.name,accounts.loggedin,accounts.location,accounts.laston
FROM commentary
INNER JOIN accounts ON accounts.acctid = commentary.author
WHERE section = "'.$this->section.'" AND accounts.locked = 0 AND priv = 1
ORDER BY commentid DESC
LIMIT 0,10');
while( $row = mysql_fetch_assoc($s) ) {
$i++;
$comments[$row['commentid']]['i'] = $row['commentid'];
$comments[$row['commentid']]['c'] = $row['comment'];
$comments[$row['commentid']]['p'] = $row['postdate'];
$comments[$row['commentid']]['pR'] = $row['priv'];
$comments[$row['commentid']]['pT'] = $row['pTo'];
$comments[$row['commentid']]['pF'] = $row['pFrom'];
$comments[$row['commentid']]['iN'] = $row['isNpc'];
$comments[$row['commentid']]['iE'] = $row['isEmote'];
$comments[$row['commentid']]['iS'] = $row['isSys'];
$comments[$row['commentid']]['n'] = $row['name'];
$comments[$row['commentid']]['lO'] = $row['laston'];
$comments[$row['commentid']]['lI'] = $row['loggedin'];
$comments[$row['commentid']]['l'] = $row['login'];
$private = true;
$ids[$row['commentid']] = $row['commentid'];
}')
Ich bin mit dem Code definitiv nicht zufrieden, wüsste aber auch gerade nicht in welche Richtung ich denken sollte, daher ich das so noch nicht gemacht habe.
Ich erwarte nun auch keinen neuen Abfragecode, sondern viel eher einen Denkhinweis in welche Richtung ich denken sollte. (:
Liebe Grüße,
My.
P.S: Verzeihung wegen der Grammatik.
Bin gerade noch in der Schule und musste mich beeilen.