Seite 1 von 3
Abfrage für Gruppenmitgliedschaft?
Verfasst: 20.11.2004 08:58
von kratzer54847
hoi,
ich schreib ich gerade an einer SQL-Abfrage,die bewirkt,dass angezeigt wird,in welchen Usergruppen ein User Mitglied ist, zu Tode
ich will ein Array mit den Gruppennamen erstellen und die dann anzeigen,doch das ist kein Problem,das Problem ist nur,wie ich an die Gruppennamen erstmal rankomme...
Code: Alles auswählen
//
// Select User's Group Memberships
//
$sql = "SELECT group_id
FROM " . USER_GROUP_TABLE . "
WHERE user_id = '$userdata[user_id]'";
$result = mysql_query($sql);
$groups = array();
if ( $row = $db->sql_fetchrow($result) )
{
$groups['id'] = $row['group_id'];
$sql = "SELECT group_name
FROM " . GROUPS_TABLE . "
WHERE group_id IN ($groups[id])
AND group_single_user = '0'";
echo $sql;
}
das hab ich bisher probiert....doch es funzt nicht
mfg Johny
Verfasst: 20.11.2004 10:53
von saerdnaer
Code: Alles auswählen
$sql = "SELECT g.group_id, g.group_name
FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
WHERE ug.user_id = '" . $userdata['user_id'] . "'
AND ug.group_id = g.group_id";
$result = mysql_query($sql);
heraus kommten datensätze mit der gruppen_id und dem gruppen_namen der gruppen in der, der jeweilige user ist.
BTW: der kb link in deiner sig ist defekt
ah
Verfasst: 20.11.2004 12:53
von kratzer54847
hoi saerdnaer,
danke für die beiden Hinweise habs direkt mal korrigiert.
aber eine Frage wirft sich da noch auf...ich hab jetzt die Query mal "umgedreht" um alle Gruppen anzeigen zu lassen,in denen ein User nicht mitglied ist...
Code: Alles auswählen
//
// Select User's Non Group Memberships
//
$sql = "SELECT g.group_id, g.group_name
FROM phpbb_user_group ug, phpbb_groups g
WHERE ug.user_id != '2'
AND ug.group_id = g.group_id
AND g.group_single_user = '0'";
$result = mysql_query($sql);
$groupnonmemberships = array();
while ( $row = $db->sql_fetchrow($result) )
{
$groupnonmemberships['id'] = $row['group_id'];
$groupnonmemberships['name'] = $row['group_name'];
$template->assign_block_vars('groupsnon', array(
'GROUP_ID' => $groupmemberships['id'],
'GROUP_NAME' => $groupmemberships['name']
));
}
doch irgendwie werden da genau dieselben Gruppen angezeigt,wie beim 1. Teil,in phpmyadmin gehts aber
mfg Johny[/code]
Verfasst: 20.11.2004 13:59
von saerdnaer
Code: Alles auswählen
$sql = "SELECT g.group_id, g.group_name
FROM phpbb_user_group ug, phpbb_groups g
WHERE ug.user_id != '2'
AND ug.group_id = g.group_id
AND g.group_single_user = '0'";
$result = mysql_query($sql);
$groupnonmemberships = array();
while ( $row = $db->sql_fetchrow($result) )
{
$groupnonmemberships[] = $row;
$template->assign_block_vars('groupsnon', array(
'GROUP_ID' => $row['group_id'],
'GROUP_NAME' => $row['group_name']
));
}
wobei ich nicht weiß wofür du $groupnonmemberships benutzen willst...
ah
Verfasst: 20.11.2004 14:06
von kratzer54847
jo hat wunderbar geklappt danke!
Verfasst: 20.11.2004 15:24
von kratzer54847
hm auf einmal zeigt er mir folgendes an:
Memberships: Admins, Testgruppe
Non-Memberships: Testgruppe
klingt irgendwie unlogisch
der einzige Unterschied beider Gruppen ist,dass ich Gruppenleiter der UG "Admins" bin,in der Testgruppe bin ich aber nur Member.
Verfasst: 20.11.2004 16:25
von saerdnaer
Code: Alles auswählen
$sql = "SELECT g.group_id, g.group_name
FROM phpbb_groups g LEFT JOIN phpbb_user_group ug ON ug.group_id = g.group_id AND ug.user_id = '2'
WHERE g.group_single_user = 0
AND ug.group_id IS NULL";
Verfasst: 20.11.2004 16:48
von kratzer54847
hoi,
vielen Dank echt super!
mfg Johny
Verfasst: 20.11.2004 17:29
von saerdnaer
die funktioniert wirklich?
Verfasst: 20.11.2004 17:41
von kratzer54847
jupp...
AND ug.user_id = '2'
hab halt das hier eben schnell durch
AND ug.user_id = '$userdata[user_id]'
ersetzt und schon ging es allgemein
wieso sollte die nicht gehen?