[Forum] Moderator-Rechte

sonicks

Erfahrenes Mitglied
Guten Abend,

Ich bin gerade dabei ein komplettes Forum in PHP zu schreiben und bin jetzt am Punkt "Moderatoren für verschiedene Boards" angelangt. Jetzt hab ich mich gefragt, wie ich das am Besten anstelle, dass alles so funktioniert, wie man es aus anderen Foren kennt. Ein Moderator soll später Threads im zugewiesenen Board bearbeiten, löschen, verschieben usw. können.

Doch wie mach ich die Abfrage, ob ein User überhaupt Moderator in diesem Board ist.

Ich hab es mal so probiert:

Tabelle für die Moderatoren angelegt

PHP:
CREATE TABLE `moderator` (
  `mod_name` varchar(255) NOT NULL default '',
  `mod_id` int(11) NOT NULL default '0',
  `board_id` int(11) NOT NULL default '0',
  `id` int(11) NOT NULL auto_increment,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=24 ;

Und dann mit einer einfachen Abfrage überprüft:

PHP:
<?
$modcheck = mysql_fetch_array(mysql_query("SELECT * FROM moderator WHERE board_id = '$_GET[board_id]'"));
if($modcheck[mod_id] == $userid){

echo "Du bist mod für dieses Forum";

}else{ 

echo "Du bist KEIN Mod für dieses Forum";
}
?>

Das hat soweit auch geklappt, wenn ein User pro Board eingetragen war. Habe ich mehrere User für ein Board als Moderator eingetragen, hat er immer nur die 1. Person rausselected.

Ich bin einfach auf keine Brauchbare Lösung gekommen, hab auch schon in den WBB Code reingeschaut aber daraus wurde ich auch nicht schlau.
Wäre sehr nett, wenn mir jemand bei meinem Problem helfen könnte
 
PHP:
<? 
$modcheck = mysql_fetch_array(mysql_query("SELECT * FROM moderator WHERE board_id = '$_GET[board_id]' AND mod_id = '$userid'")); 
if($modcheck[mod_id] == $userid){ 

echo "Du bist mod für dieses Forum"; 

}else{ 

echo "Du bist KEIN Mod für dieses Forum"; 
} 
?>

Du musst gegen die ID des Moderators prüfen oder per while alle Datensätze durchgehen. So fragst du ja nur die Tabelle moderator ab und bekommst dann alle Moderatoren zurück, nimmst aber nur den ersten Datensatz. kann ja nichts draus werden.

Ciao, Jörg
 
Danke für deine Antwort...

Ich hab jetzt das probiert :

PHP:
<?
$modres = mysql_query("SELECT * FROM moderator WHERE board_id = '$_GET[board_id]'");
while ($modcheck = mysql_fetch_array($modres)) {
if($modcheck[mod_id] != $userid){

echo "DU BIST KEIN MOD";

} else {

echo "du bist mod";

?>

Ok jetzt hab ich folgendes Problem:

Wenn ich drauf gehe, dann funktioniert alles für ca. 2-3 Sekunden. Dann wird aber ausgegeben "DU BIST KEIN MOD"

Woran kann das liegen? Checkt der alle ids hintereinander durch ?
 
Guck dir den oberen Post von mir besser an. Der SQL Code ist verändert. Damit bekommst du nur dann ein Resultat, wenn der User Mod ist.

WHERE board_id = '$_GET[board_id]' AND mod_id = '$userid'

So wie du das machst passiert folgendes: du gehst die Datensaätze durch und checkst ob da ein Mod dabei ist. Nachdem der Datensatz von dem aktuellen User kam wenn der Mod ist, kommen aber unter Umständen noch andere.

Du musst die Datensätze auf den beschränken, der die Userid des aktuellen Users hat. Ist auch Ressourcenverschwendung wenn man mehr abfragt, als nötig.

Ciao, Jörg
 
Zurück