ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
381
381
EMPFEHLEN
-
Hallo zusammen,
ich habe (leider) mal wieder ein kleines Problem
Ich habe mir jetzt ein eigenes Forum gecodet, welches soweit auch alles super klappt, außer die "neue Beiträge" Anzeige.
Es klappt soweit auch alles, wenn ein neuer Beitrag zu einem bereits bestehenden Thread erscheint.
Eröffnet man jetzt allerdings einen neuen Thread, so wird das nicht angezeigt sondern lediglich der neue Beitrag in dem bereits vorhandenen Thread.
Hier einmal kurz meine Abfragen, damit man es genauer versteht, was ich meine bzw wie ich es bisher umgesetzt habe:
$row_u['board_utopics_id'] ist die ID der Topics/der Kategorie (zb Main >> Allgemein).
PHP-Code:// neuer Thread
$sql_c = "SELECT *
FROM board_utopics, board_thread, member
WHERE board_thread_topic_id = board_utopics_id
AND board_utopics_id = ".$row_u['board_utopics_id']."
AND board_thread_creator = member_id
GROUP BY board_thread_id
ORDER BY board_thread_last_post DESC
LIMIT 1";
$result_c = mysql_query($sql_c) OR die(mysql_error());
$anz_c = mysql_num_rows($result_c);
$row_c = mysql_fetch_assoc($result_c);
PHP-Code:// neuer Beitrag zu bestehendem Thread
$sql_d = "SELECT *
FROM board_utopics, board_thread, member, board_answer
WHERE board_thread_topic_id = board_utopics_id
AND board_utopics_id = ".$row_u['board_utopics_id']."
AND board_answer_creator = member_id
AND board_answer_thread_id = board_thread_id
GROUP BY board_thread_id, board_answer_id
ORDER BY board_answer_date DESC
LIMIT 1";
$result_d = mysql_query($sql_d) OR die(mysql_error());
$anz_d = mysql_num_rows($result_d);
$row_d = mysql_fetch_assoc($result_d);
Ich hoffe, ihr versteht den Code ^ ^'PHP-Code:// Prüfen, ob Member neuen Beitrag/Thread schon gelesen hat
if($anz_d || $anz_c) {
if($anz_d) {
// neuer Beitrag zu bestehendem Thread
$sql_y = "SELECT *
FROM member_thread_read, board_thread, board_utopics
WHERE board_utopics_id = ".$row_u['board_utopics_id']."
AND board_utopics_id = board_thread_topic_id
AND board_thread_id = ".$row_d['board_thread_id']."
AND member_thread_read_member_id = ".$_SESSION['member_id']."
AND member_thread_read_thread_id = board_thread_id
AND member_thread_read_last_read > board_thread_last_post";
} elseif($anz_c) {
// neuer Thread
$sql_y = "SELECT *
FROM member_thread_read, board_thread, board_utopics
WHERE board_utopics_id = ".$row_u['board_utopics_id']."
AND board_utopics_id = board_thread_topic_id
AND board_thread_id = ".$row_c['board_thread_id']."
AND member_thread_read_member_id = ".$_SESSION['member_id']."
AND member_thread_read_thread_id = board_thread_id
AND member_thread_read_last_read > board_thread_last_post";
}
$result_y = mysql_query($sql_y) OR die(mysql_error());
$anz_y = mysql_num_rows($result_y);
if($anz_y) {
$threadreadyet = '<img src="/image/old_posts.png" alt="Old Posts" />';
} else {
$threadreadyet = '<img src="/image/new_posts.png" alt="New Posts" />';
}
} else {
$threadreadyet = '<img src="/image/old_posts.png" alt="Old Posts" />';
}
Sollte das evtl. einfacher gehn, so freu ich mich auf Vorschläge
Und ich hoffe, jmd kann mir helfen, ich komm einfach nicht weiter im Moment
Geändert von BadKiss (28.01.10 um 13:20 Uhr)
-
Wenn du machst
Code :1 2 3 4 5 6
if($anz_d || $anz_c) { if($anz_d) { // neuer Beitrag zu bestehendem Thread } elseif($anz_c) { // neuer Thread }
dann liest er dank else if() neue Threads nur dann, wenn es keine neuen Beiträge in bestehenden Threads gibt.
Nachdem du auch noch für beide Abfragen sql_y, anz_y und result_y verwendest, würde er selbst wenn er beides lesen würde die erste Abfrage mit der zweiten Abfrage überschreiben.
In kurz: Wenn du beide Abfragen auf einmal brauchst, kannst du sie nicht beide auf einmal checken, bzw. musst verschiedene Variablen verwenden.
-
Hmm, dachte ich mir schon fast..
Wie würdest du's denn lösen?
-
Ohne else halt und mit verschiedenen Variablen
Code :1 2 3 4 5 6 7 8 9 10 11 12
if($anz_d) { $sql_y = ..... $result_y = ... $anz_y = ... } if($anz_c) { $sql_z = ..... $result_z = ... $anz_z = ... }
-
Das hilft mir leider auch nicht weiter, er zeigt immer noch das falsche Symbol an..
Ebenso hab ich das Problem bei der Ausgabe des letzten Posts, ohne der If-Anweisung dort gibt er mir für beides das aktuellste aus..
Die weitere Abfrage in $anz_d soll mir lediglich die richtige Seitenzahl ausgeben.PHP-Code:// Neuer Post zu bestehendem Thread
if($anz_d) {
$sql_z = "SELECT *
FROM board_answer
WHERE board_answer_id = ".$row_d['board_answer_id']."";
$result_z = mysql_query($sql_z) OR die(mysql_error());
$anz_z = mysql_num_rows($result_z);
$row_z = mysql_fetch_assoc($result_z);
$ansid = $row_z['board_answer_answer_id'];
$i = ceil($ansid / 10);
echo 'von <a href="index.php?site=member&id='.$row_d['member_id'].'">'.$row_d['member_nick'].'</a>
<a href="index.php?site='.$_GET['site'].'&topic='.$row_d['board_utopics_id'].'&thread='.$row_d['board_thread_id'].'&page='.$i.'#post='.$row_d['board_answer_id'].'">»</a><br />
'.date('d.m.y, H:i',$row_d['board_answer_date']);
echo '<br />';
}
// neuer Thread
if($anz_c) {
echo 'von <a href="index.php?site=member&id='.$row_c['member_id'].'">'.$row_c['member_nick'].'</a>
<a href="index.php?site='.$_GET['site'].'&topic='.$row_c['board_utopics_id'].'&thread='.$row_c['board_thread_id'].'&page=1">»</a><br />
'.date('d.m.y, H:i',$row_c['board_thread_date']);
}
Und wie gesagt, er zeigt mir trotzdem weiterhin das falsche Symbol an.
Lediglich wenn der 1. Thread in der Liste ungelesen ist, zeigt er das "neue Beiträge" Symbol an, anders das "keine neuen Beiträge" Symbol
-
Um das richtige Symbol zu bekommen musst du natürlich auch beide Ergebnisse prüfen.
Code :1 2 3 4 5
if($anz_y || $anz_z) { $threadreadyet = '<img src="/image/old_posts.png" alt="Old Posts" />'; } else { $threadreadyet = '<img src="/image/new_posts.png" alt="New Posts" />'; }
Wenn in deiner SELECT Abfrage am Ende LIMIT 1 steht, dann wird mysql_num_rows() da auch nur 1 Datensatz finden.
Wenn du wissen willst wieviele Datensätze es dazu gibt, musst du die Abfrage ohne LIMIT neu definieren, mal abgesegen davon, dass ODER BY, GROUP BY und DESC für mysql_mun_rows unnötig sind.
-
So hatte ich es schon probiert, allerdings hatte das nichts bewirkt.
Ich versuch aber noch etwas anderes, wenn noch ein Vorschlag kommt, bitte posten.
-
Mein Problem besteht leider weiterhin
Ähnliche Themen
-
Beiträge im Forum als ungelesen anzeigen
Von Schlickser im Forum PHPAntworten: 3Letzter Beitrag: 18.02.07, 01:26 -
Wie bekomme ich neue Beiträge nach oben(sehr simples Forum)?
Von del_nielo im Forum PHPAntworten: 25Letzter Beitrag: 21.03.06, 22:17 -
Forum Neue Beiträge?
Von eternitysoft im Forum PHPAntworten: 14Letzter Beitrag: 11.09.05, 12:31 -
neueste Beiträge aus dem Forum anzeigen lassen
Von Master-G im Forum PHPAntworten: 2Letzter Beitrag: 14.12.04, 16:48 -
Neue Beiträge farblich markieren in meinem Forum
Von zweitausendvier im Forum PHPAntworten: 3Letzter Beitrag: 20.07.04, 10:38





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren