Forum new posts die X.te (sry ;))

sonnySTAR

Erfahrenes Mitglied
Hoi, nach langer zeit melde ich mch wieder zurück ;) ...

So, hab nun einige Monate nicht mehr programmiert und bin nun wieder daran, dem Forum die Funktion zu verpassen, zu sehen ob einer neuer Post seit dem letzten Klick/Post von dem eingeloggten User vorhanden ist,

So, ich habe 2 MySQL-Tabellen. Einmal die "cms_posts":
Code:
CREATE TABLE `cms_posts` (
  `postid` int(11) NOT NULL auto_increment,
  `threadid` int(11) NOT NULL default '0',
  `von` text NOT NULL,
  `datum` text NOT NULL,
  `post` text NOT NULL,
  `titel` text NOT NULL,
  `ip` text NOT NULL,
  `vonid` varchar(255) NOT NULL default '',
  `avatar` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`postid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

Und einmal die "cms_foren_posts" (In der ich die besuchten Threads der User einspeichere):
Code:
CREATE TABLE `cms_foren_posts` (
  `uid` int(11) NOT NULL default '0',
  `boardid` int(11) NOT NULL default '0',
  `threadid` int(11) NOT NULL default '0',
  `time` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Das Einspeichern der besuchten Threads funktioniert soweit auch. Nun kommt ein Ausschnitt meiner Threads.php in der die einzelnen Threads des Forums aufgelistet sind:
PHP:
<?
					$uid = $udata[userid];
					$check = mysql_query("SELECT * FROM ".$pref."posts WHERE threadid = ".$threadid." ORDER BY postid LIMIT 0,1");
					$check2 = mysql_query("SELECT * FROM ".$pref."foren_posts WHERE uid = ".$uid." && threadid = ".$threadid." && boardid = ".$boardid."");
					$zc = mysql_fetch_array($check);
					$zc2 = mysql_fetch_array($check2);
					if($zc[datum] < $zc2[time]) {
					echo '<a href="?cont=topic&threadid='.$threadid.'&boardid='.$boardid.'"><img src="gfx/board_nnp.jpg" width="37" height="34" border="0"></a>';
					} else {
					echo '<a href="?cont=topic&threadid='.$threadid.'&boardid='.$boardid.'"><img src="gfx/board_onp.jpg" width="37" height="34" border="0"></a>';
					}
					?>

Ziemlich kompliziert, aber ich bin ja auch noch dabei zu lernen ;).
So, das Komische dabei ist, dass er mir nur das "board_nnp.jpg" anzeigt. Egal ob neue Posts vorhanden sind ;(. Ich hab da irgendwas vergessen oder total falsch gemacht.

Seht ihr den Fehler ? Ich bin momentan irgendwie verwirrt *lach*.

Vielen Dank im Vorraus, und entschuldigt mich bitte für den überaus langen Text =]
 
Minimieren wir die Abfrage mal auf das Wesentliche:
PHP:
<?php

	$query = '
		SELECT
		        IF( `a`.`datum` < `b`.`time`, 1, 0) AS `foobar`
		  FROM
		        `'.$pref.'posts` AS `a`,
		        `'.$pref.'foren_posts` AS `b`
		  WHERE
		        `threadid` = '.intval($thread).'
		    AND `b`.`uid`  = '.intval($udata['userid']).'
		  ORDER BY
		        `a`.`postid`
		  LIMIT
		        1
		';
	$result = mysql_query($query)
		or die(mysql_error());

	if( mysql_result($result, 0) ) {
		echo '<a href="?cont=topic&amp;threadid='.$threadid.'&amp;boardid='.$boardid.'"><img src="gfx/board_nnp.jpg" width="37" height="34" border="0"></a>';
	} else {
		echo '<a href="?cont=topic&amp;threadid='.$threadid.'&amp;boardid='.$boardid.'"><img src="gfx/board_onp.jpg" width="37" height="34" border="0"></a>';
	}

?>
Ich hoffe, dass meine „Radikalkur“ funktioniert.
 
Zurück