Hallo,
ich arbeite an einem kleinen Rechtesystem für ein Forum.
Natürlich soll nicht jeder User jedes Forum sehen. Deswegen werden User in Gruppen eingeteilt, und Gruppen dann auf die ForenID´s berechtigt.
Funktioniert alles wunderbar, ist gut und toll. Natürlich soll auch bei einer Suche nicht einfach hingegangen werden und "Select * from discussion_postings WHERE [...]" gemacht werden, sondern auch hier die Rechtestruktur eingehalten werden. Ich möchte also nur Beiträge aus Foren die ich auch sehen darf.
Kein Thema, bekomm ich zu nem gewissen Teil noch hin.
Mein Problem: wenn ich die Query mit
"[...] WHERE cgu.nick='$nick' AND dp.message LIKE '%$suche%' ORDER BY [...]"
abschicke, und keine weitere WHERE Klausel einbaue funktioniert es. Mein Bauweg war aber danach noch ein "OR dp.message LIKE '%$suche%'" einzubauen.
Ab dem Zeitpunkt wo ich die Where Klausel um OR erweitere, bekomme ich zu viele Ergebnisse, eben halt von den Foren die ich nicht sehen dürfte. Hat wer ne Idee warum das so ist?
Hier beide Statements in voller Länge:
Das funktionierende:
Code:
SELECT * FROM community_groups_user AS cgu
INNER JOIN `community_groups` AS cg ON cgu.group_id = cg.group_id
INNER JOIN `discussion_access` AS da ON cg.group_id = da.group_id
LEFT JOIN `discussion_topics` AS dt ON da.topic_id = dt.id_topic
INNER JOIN `discussion_postings` AS dp ON da.topic_id = dp.id_topic
WHERE
cgu.nick='$nick'
AND dp.message LIKE '%$suche%'
ORDER BY tmstamp DESC
Hier das NICHT funktionierende (es funktioniert Syntaxmäßig, nur eben falsche Ergenisse werden geliefert):
Code:
SELECT * FROM community_groups_user AS cgu
INNER JOIN `community_groups` AS cg ON cgu.group_id = cg.group_id
INNER JOIN `discussion_access` AS da ON cg.group_id = da.group_id
LEFT JOIN `discussion_topics` AS dt ON da.topic_id = dt.id_topic
INNER JOIN `discussion_postings` AS dp ON da.topic_id = dp.id_topic
WHERE
cgu.nick='$nick'
AND dp.message LIKE '%$suche%'
OR dp.subject LIKE '%$suche%'
ORDER BY tmstamp DESC
Grüße: Tom