Seite 1 von 2

Wenn Benutzer in Gruppe dann anzeigen, help! :)

Verfasst: 04.10.2007 20:38
von RyoBerlin
Bezugnehment auf

http://www.phpbb.de/viewtopic.php?t=151304

brauche ich mal hilfe dabei aber umgekehrt.

In dem Thema geht es ja darum das der surfende user ausgelesen wird.

Ich möchte aber jetzt eine Grafik auf dem Profil anzeigen lassen wenn der User dessen Profil man anschaut sich in der Gruppe befindet...

Wie geht das?

Bisheriger code

Code: Alles auswählen

<!-- IF S_IN_GROUP --><a href="viewtopic.php?f=2&t=22"><img style="border: 0px solid ; width: 151px; height: 50px;" alt="Dieses Mitglied ist echt!" src="{T_THEME_PATH}/images/geprueft.jpg" /></a><br><!-- ENDIF -->	
Ist dafür leider völlig unbrauchbar da es ja nicht um den surfenden geht sondern um das Profil des users das man sieht :(

Verfasst: 05.10.2007 08:12
von Dr.Death
Stimmt, dafür war die function auch nicht gedacht.

Hier die neue Funktion:

Code: Alles auswählen

function get_group_auth($access_group = 5, $user_id = false) 
{ 
   global $db, $user; 

   if ($user_id == false)
   {
		// Wurde keine $user_id übergeben, benutze den User, der diese Funktion aufgerufen hat.
		$user_id = $user->data['user_id'];
   }
   
   $access_group = (int)$access_group;
   $user_id = (int)$user_id;
    
   $sql = 'SELECT g.group_id 
      FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug 
      WHERE g.group_id = ug.group_id 
         AND ug.user_id = ' . $db->sql_escape($user_id) . ' 
         AND ug.user_pending <> ' . TRUE . ' 
         AND g.group_id = ' . $db->sql_escape($access_group); 
   $result = $db->sql_query($sql); 

   $check_group_auth = $db->sql_affectedrows($result); 
   $db->sql_freeresult($result); 
   if ( $check_group_auth <> 0 ) 
   { 
      return TRUE; 
   } 
   return FALSE; 
}

Nun kann man auf 2 verschiedene Wege die Funktion aufrufen:

1. Variante:
Prüfen ob der User, der die Seite aufgerufen hat, in der Gruppe ist:

Code: Alles auswählen

// Die folgende Zahl ist die ID der Gruppe die Ihr prüfen möchtet 
$check_group = 10; 

// Ist der User, der diese PHP Datei aufgerufen hat, in der Gruppe mit der o.g. ID ?? 
$is_in_group = get_group_auth($check_group);
2. Variante:
Prüfen ob ein bestimmter User in einer bestimmten Gruppe ist:

Code: Alles auswählen

// Die folgende Zahl ist die ID der Gruppe die Ihr prüfen möchtet 
$check_group = 10; 

// Die folgende $check_user_id ist die zu überprüfende $user_id
$check_user_id = 2;

// Ist der angegebene User in der Gruppe mit der o.g. ID ?? 
$is_in_group = get_group_auth($check_group, $check_user_id);

Bei der 2. Variante ist zubeachten, das Ihr die zu überprüfende User_Id auch richtig füllt.
Je nach Script ist ja eine andere Variable mit der zu überprüfenden User_ID gefüllt...
Beispiel:

Code: Alles auswählen

$check_user_id = $row['user_id'];

Die Variable $is_in_group beinhaltet nach Aufruf der Funktion entweder TRUE oder FALSE und kann dann weiter verwertet werden.

Verfasst: 05.10.2007 12:53
von RyoBerlin
Danke dir, ch werds heute mal vesuchen.

Hoffentlich scaff ich das diesmal auch :/

Aber geht das auch das beide Funktionen Paalle laufen oder nur eine von beiden?

Weil sieht sich so ähnlich

Verfasst: 05.10.2007 12:59
von Dr.Death
Du kannst die "alte Funktion" mit der neuen ersetzen ;-)

Verfasst: 05.10.2007 13:03
von RyoBerlin
also entweder oder?

hmmm das iss schlecht weil ich beide haben wollte..

mit der einen verstecke ich optionen/infos

Mit der anderen wollte ich jetzt infos anzeigen lassen *seuftz*

Verfasst: 05.10.2007 13:19
von Dr.Death
lese meinen vorherigen Satz bitte erneut.....

Er beudeutet: Die neue Funktion beherrscht beides ;-)

Ersetzte Deine alte Funktion mit der neuen und Du kannst beides haben ;-)

Verfasst: 05.10.2007 13:22
von RyoBerlin
ahh okey.

Bistn Engel :)

Ich bin halt klein Progger unter ersetzen verstehe ich immer bisschen was anderes :D

Nur noch eine Frage ehe ich mich später mal dransetze.

Mit welchem Befehl lasse ich das dann anzeigen?

auch IF S_IN_GROUP, nee oder?

1000 Dank! Wo wären wir nur ohne dich :)

Verfasst: 05.10.2007 13:27
von Dr.Death
Genau.

Du musst natürlich wie gehabt das Ergebnis

$is_in_group

wieder in das Template bekommen.

Wie Du das machst ist ja egal, du kannst Dir auch eine neue Zuweisung aussuchen:

Code: Alles auswählen

'S_USER_XYZ_IS_IN_GROUP'  => $is_in_group,
Dann musst Du natürlich im Template die IF Abfrage auf die neue Variable setzen:

Code: Alles auswählen

<!-- IF S_USER_XYZ_IS_IN_GROUP -->

blablabla

<!-- ENDIF -->

Verfasst: 05.10.2007 13:49
von RyoBerlin
Seh ich das richtig das es pro User ist???

erklär nochmal wies gemeint ist.

Wenn der User dessen Profil gerade angeschaut wird in der Gruppe ist zeige ein bild an.

Müsste man dann wohl statt XYZ = {USERNAME} nehmen hmm nee warte das haut nich hin *G* das wäre ja wieder der surfer

Verfasst: 05.10.2007 13:52
von Dr.Death
Nein, das mit der Variable S_USER_XYZ.... war nur als Beispiel für eine andere Template Bezeichnung gedacht.

Siehe im o.g. Beitrag "2. Variante".

Hint: Du baust ja Deine Abfrage in der memberlist.php ein.

An der richtigen Stelle müsste es dann also so aussehen:

Code: Alles auswählen

// Die folgende Zahl ist die ID der Gruppe die Ihr prüfen möchtet 
$check_group = 10; 

// Die folgende $check_user_id ist die zu überprüfende $user_id 
$check_user_id = (int) $member['user_id'];

// Ist der angegebene User in der Gruppe mit der o.g. ID ?? 
$is_in_group = get_group_auth($check_group, $check_user_id);