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 :cry:

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... :grin:

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 :cry:

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 :roll:

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

:roll:

klingt irgendwie unlogisch :D

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?