Hallo,
habe ein phpbb Forum. Ich möchte im Userprofil die Beiträge eines users anzeigen lassen. Dazu habe ich eine Inner join Abfrage geschrieben welche funktioniert:
Soweit so gut, nun muss ich aber eine weitere Abfrage einbauen, welche überprüft ob der User welcher sich das Profil ansieht, Die Kategorien wo sich die Themen befindet sehen darf. Er soll also nur die Topics sehen, für welche Kategorie er das Recht besitzt.
Deswegen habe ich über der Abfrage folgenden Code:
die neue Abfrage mit der variable $where_forums sieht dann so aus:
Dies funktioniert aber nicht. Die $auth Abfrage ist korrekt, dass weiss ich. Nur die SQL Abfrage ist falsch.
Error
Ich mache glaube ich auch einen Denkfehler. Ich muss die phpbb_forums wohl noch wo einbinden?
Würd mich freuen wenn mir jemand hilft!
Grüße
Peter
habe ein phpbb Forum. Ich möchte im Userprofil die Beiträge eines users anzeigen lassen. Dazu habe ich eine Inner join Abfrage geschrieben welche funktioniert:
PHP-Code:
$sql = "SELECT
phpbb_topics.topic_poster,
phpbb_topics.topic_time,
phpbb_topics.topic_id,
phpbb_topics.topic_title,
phpbb_users.username,
phpbb_users.user_id
FROM phpbb_topics
INNER JOIN phpbb_users ON ( phpbb_topics.topic_poster = phpbb_users.user_id )
WHERE phpbb_topics.topic_poster = $user_ID
ORDER BY phpbb_topics.topic_id DESC
LIMIT 0 , 10
";
Soweit so gut, nun muss ich aber eine weitere Abfrage einbauen, welche überprüft ob der User welcher sich das Profil ansieht, Die Kategorien wo sich die Themen befindet sehen darf. Er soll also nur die Topics sehen, für welche Kategorie er das Recht besitzt.
Deswegen habe ich über der Abfrage folgenden Code:
PHP-Code:
$sql_auth = "SELECT * FROM ". FORUMS_TABLE;
if( !$result_auth = $db->sql_query($sql_auth) )
{
message_die(GENERAL_ERROR, 'could not query forums information.', '', __LINE__, __FILE__, $sql_auth);
}
$forums = array();
while( $row_auth = $db->sql_fetchrow($result_auth) )
{
$forums[] = $row_auth;
}
$db->sql_freeresult($result_auth);
$is_auth_ary = array();
$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata);
$except_forums = '\'start\'';
for( $f = 0; $f < count($forums); $f++ )
{
if( (!$is_auth_ary[$forums[$f]['forum_id']]['auth_read']) || (!$is_auth_ary[$forums[$f]['forum_id']]['auth_view']) )
{
if( $except_forums == '\'start\'' )
{
$except_forums = $forums[$f]['forum_id'];
}
else
{
$except_forums .= ','. $forums[$f]['forum_id'];
}
}
}
$where_forums = ( $special_forums == '0' ) ? 'phpbb_forums.forum_id NOT IN ('. $except_forums .')' : 'phpbb_forums.forum_id NOT IN ('. $except_forums .') AND phpbb_forums.forum_id IN ('. $forum_ids .')';
die neue Abfrage mit der variable $where_forums sieht dann so aus:
PHP-Code:
$sql = "SELECT
phpbb_topics.topic_poster,
phpbb_topics.topic_time,
phpbb_topics.topic_id,
phpbb_topics.topic_title,
phpbb_users.username,
phpbb_users.user_id
FROM phpbb_topics
INNER JOIN phpbb_users ON ( phpbb_topics.topic_poster = phpbb_users.user_id )
WHERE $where_forums AND phpbb_topics.topic_poster = $user_ID
ORDER BY phpbb_topics.topic_id DESC
LIMIT 0 , 10
";
Error
PHP-Code:
could not obtain main information.
DEBUG MODE
SQL Error : 1109 Unknown table 'phpbb_forums' in where clause
SELECT phpbb_topics.topic_poster, phpbb_topics.topic_time, phpbb_topics.topic_id, phpbb_topics.topic_title, phpbb_users.username, phpbb_users.user_id FROM phpbb_topics INNER JOIN phpbb_users ON ( phpbb_topics.topic_poster = phpbb_users.user_id ) WHERE phpbb_forums.forum_id NOT IN ('start') AND phpbb_topics.topic_poster = 2 ORDER BY phpbb_topics.topic_id DESC LIMIT 0 , 10
Ich mache glaube ich auch einen Denkfehler. Ich muss die phpbb_forums wohl noch wo einbinden?
Würd mich freuen wenn mir jemand hilft!
Grüße
Peter
Kommentar