MySQL-Abfrage RANKS_TABLE

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

MySQL-Abfrage RANKS_TABLE

Beitrag von nickvergessen »

hi,

ich hab damit ein kleines Problem.
Ich hab hier eine SQL-Abfrage:
http://clusedo.cl.funpic.de/phpBB/sql1.txt

Das was unter SQL 1 steht funktioniert ohne Probleme.
Wnen ich allerdings die Rang-Abschnitte dazunehme (SQL 2), gibt er mir jedes Ergebnis 2mal aus mit beiden Rängen angegeben sind.
Bei 3 Rängen 3mal. Wo liegt da der Fehler?
An der umdefinierung auf:

Code: Alles auswählen

                         $posts[$i]['rank_id'] = $row['rank_id'];
                         $posts[$i]['rank_title'] = $row['rank_title'];
denke ich, ich weiß nur nicht, was ich da nun genau angeben muss.

in meiner Ausgabedatei werden sie wie folgt weiter verwendet:

Code: Alles auswählen

if(!isset($HTTP_GET_VARS['article']))
{
	$fetchposts = phpbb_fetch_posts($board_config['news_forum_ids'], $board_config['news_number_of_news'], $board_config['news_text_length']);

	for ($i = 0; $i < count($fetchposts); $i++)
	{
		$template->assign_block_vars('fetchpost_row', array(
			'TITLE' => $fetchposts[$i]['topic_title'],
                         'MINI_POST_IMG' => $mini_post_img,
                         'POSTER' => $fetchposts[$i]['username'],
                         'POSTER_RANK' => $fetchposts[$i]['rank_title'])
		);
	}
}
Ich hoffe jemand kann mir helfen.
kein Support per PN
Benutzeravatar
Banger
Ehemaliges Teammitglied
Beiträge: 375
Registriert: 03.05.2005 21:53
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Banger »

Hi,
das erste, was mir auffällt: Du selektierst die Einträge aus der Rangtabelle ohne Bedingung; das solltest Du mal als erstes beheben :)
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Beitrag von nickvergessen »

Banger hat geschrieben:Du selektierst die Einträge aus der Rangtabelle ohne Bedingung
wie müsste die aussehen, und wo muss das rein?

Also hab jetzt mal bei der WHERE-Abfrage noch eingebaut:

Code: Alles auswählen

			WHERE
			  t.forum_id IN (' . $forum_sql . ') AND
			  t.topic_time <= ' . time() . ' AND
			  t.topic_poster = u.user_id AND
			  t.topic_first_post_id = pt.post_id AND
			  t.topic_first_post_id = p.post_id AND
u.user_rank = r.rank_id AND
			  t.topic_status <> 2
jetzt bringt er zwar jeden Beitrag nur noch einmal und auch mit dem richtigem Rang, allerdings nur von mir, und nicht mehr von anderen Usern
kein Support per PN
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: MySQL-Abfrage RANKS_TABLE

Beitrag von nickvergessen »

ok ich hab jetzt ne andere Lösung gefunden:
http://clusedo.cl.funpic.de/phpBB/rank_news.txt
dürfte aber nicht gerade das optimum sein, da ich bei jedem Beitrag erneut die SQL-Abfrage mache, wnen ich das richtig sehe.
Aber daran lässt sich ja noch feilen, hauptsache es funktioniert erstmal ;)
kein Support per PN
Benutzeravatar
Banger
Ehemaliges Teammitglied
Beiträge: 375
Registriert: 03.05.2005 21:53
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Banger »

nickvergessen hat geschrieben:jetzt bringt er zwar jeden Beitrag nur noch einmal und auch mit dem richtigem Rang, allerdings nur von mir, und nicht mehr von anderen Usern
Ich denke, das Problem liegt darin, dass Du rein mit Inner Joins arbeitest - d.h., es werden nur die User berücksichtigt, die auch einen Eintrag in der Ranks-Table haben. Du solltest Dich mal mit der JOIN-Syntax auseinandersetzen, insbesondere mit LEFT JOINs.
Antworten

Zurück zu „Coding & Technik“