ilch Forum » Ilch Clan 1.1 » Allgemein » Teamangabe im Profil

Geschlossen
  1. #1
    User Pic
    Kelevra Mitglied
    Registriert seit
    25.10.2007
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Hallo Leute,

    ich möchte gern im Profil eines jeden Users die Gruppen anzeigen, welchen er zugeordnet ist. Sowie ich das sehe brauch ich folgende Dateien bzw. DB Tabellen um das zu bewerkstelligen.

    • userdetails.htm
    • user_infos.php
    • user_details.php
    • Tabelle: ic1_groupusers
    • Tabelle: ic1_groups

    Die Userdetails.htm ist bereits angepasst und verfügt über einen Tag im Format {SCHLÜSSELWORT}. Das sollte doch quasi schon ausreichen wenn ich das richtig sehe.

    In der userdetails.php habe ich innerhalb des initialisierungsarray folgendes eingetragen: 'SCHLÜSSELWORT' => $schlüsselwort.

    Wohin (in welche Datei?) genau muss jetzt das DB Abfragestatement und wie müsste ich es aufbauen mit JOIN hab ichs leider nicht so deshalb 2 Abfragen. Die Statements stelle ich mir in etwa so vor:

    SELECT gid FROM ic1_groupusers WHERE uid = {uid - des aktuellen Benutzers}

    dieses Abfrageergebnis würde ich dann für die Abfrage der Teamnamen verwenden:

    SELECT name FROM ic1_groups WHERE id = {vorheriges Abfrageergebnis}


    Was würde passieren wenn der User in mehren Gruppen eingetragen ist?

    Vielen Dank schonmal für eure Hilfe.


    Zuletzt modifiziert von Kelevra am 24.09.2009 - 15:14:45
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Fire86 Mitglied
    Registriert seit
    25.04.2009
    Beiträge
    543
    Beitragswertungen
    0 Beitragspunkte
    function user_get_groups($uid) {
    $grpqry = db_query("SELECT a.`name` FROM `prefix_groups` a LEFT JOIN `prefix_groupusers` b ON a.`id` = b.`gid` WHERE b.`uid` = ".$uid);
      while ($r = db_fetch_object($grpqry)) {
        $groups[] = $r->name;
      }
    return ( implode(', ',$groups) );
    }


    ...
    'SCHLÜSSELWORT' => user_get_groups($uid),
    ...


    Das kommt in die user_details.php.
    Kein Support per Email oder ICQ!
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Kelevra Mitglied
    Registriert seit
    25.10.2007
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Alle beiden Codes? Ok probier ich mal aus, was aber nun, wenn der User in mehreren Gruppen ist?

    EDIT: Ahh, feines Ding so jetzt versuch ich noch die Abfrage zu verstehen vielen dank zwinker.

    Es gibt nur 2 vordefinierte Gruppen die im Profil erscheinen sollen. Einige Mitglieder sind aber in 2 Gruppen. Wie kann ich eine Gruppe explizit ausschließen? Danke dann wärs perfekt. Quasi noch ne Überprüfung auf Inhalt des Zurückgegebenen Arrays. [Gruppe1, Gruppe2, Gruppe3]. Wenn in der Rückgabe Gruppe 3 mit drin steht soll sie nicht angezeigt werden. Diese Gruppe brauche ich an anderer Stelle.


    Zuletzt modifiziert von Kelevra am 24.09.2009 - 17:26:10
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Fire86 Mitglied
    Registriert seit
    25.04.2009
    Beiträge
    543
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat geschrieben von Kelevra

    was aber nun, wenn der User in mehreren Gruppen ist?

    Das ist kein Problem, da die Funktion mit nem Array arbeitet, das am Ende mit implode() in einen String umgewandelt wird.

    ZitatZitat geschrieben von Kelevra

    Wie kann ich eine Gruppe explizit ausschließen?

    Die Abfrage erweitern

    function user_get_groups($uid) {
    $hide = '1,6,20'; //Welche Gruppen sollen nicht angezeigt werden? (IDs der Gruppen. Mehrere mit , trennen)
    $grpqry = db_query("SELECT a.`name` FROM `prefix_groups` a LEFT JOIN `prefix_groupusers` b ON a.`id` = b.`gid` WHERE a.`id` NOT IN($hide) AND b.`uid` = $uid");
    $groups = array();
      while ($r = db_fetch_object($grpqry)) {
        $groups[] = $r->name;
      }
    return ( implode(', ',$groups) );
    }
    Kein Support per Email oder ICQ!
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Kelevra Mitglied
    Registriert seit
    25.10.2007
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Hehe warum in die Ferne schweifen, naja ich habs mir bisschen umständlicher gemacht von wegen While und if^^. So ist es natürlich besser. Ich danke dir für deine Hilfe und hoffe, dass ich mich nich ganz so doof angestellt habe.
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Kelevra Mitglied
    Registriert seit
    25.10.2007
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Ahh eins noch an das Gruppenbild komm ich dann wie lächeln? Nochmal Gruppen sind Nutzerabhängig. Dann geb ich Ruhe lächeln. Die Funktion für das Bild sieht dann so aus meiner meinung nach:

    	function user_get_team_pic($uid){
    	$pqry = db_query("SELECT a.`img` FROM `prefix_groups` a LEFT JOIN `prefix_groupusers` b ON a.`id` = b.`gid` WHERE a.`id` AND b.`uid` = $uid");
    	$pic = array();
    		while($r = db_fetch_object($pqry)){
    			$pic[] $r->img;
    		}
    	return "<img src=\"".img."\" border=\"0\" />";
    	}


    Leider gibts da noch nen Fehler die Profilseite bleibt bei Aufruf komplett leer.


    Zuletzt modifiziert von Kelevra am 24.09.2009 - 19:18:33
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Fire86 Mitglied
    Registriert seit
    25.04.2009
    Beiträge
    543
    Beitragswertungen
    0 Beitragspunkte
    Also du kannst natürlich die Bilder in einer getrennten Funktion abfragen, das wird dann aber schwierig das Bild mit der entsprechenden Gruppe zu verknüpfen.
    Ich würd's eher als eine Funktion machen und den gesamten Ausgabestring dort festlegen.

    function user_get_groups($uid) {
    $hide = '1,6,20'; //Welche Gruppen sollen nicht angezeigt werden? (IDs der Gruppen. Mehrere mit , trennen)
    $grpqry = db_query("SELECT a.`name`,a.`img`,a.`id` FROM `prefix_groups` a LEFT JOIN `prefix_groupusers` b ON a.`id` = b.`gid` WHERE a.`id` NOT IN($hide) AND b.`uid` = $uid");
    $str = '';
      while ($r = db_fetch_object($grpqry)) {
       if ( file_exists($r->img) ) {
        $str .= '<a href="index.php?teams-show-'.$r->id.'" title="'.$r->name.'"><img src="'.$r->img.'" border="0" alt="'.$r->name.'" /></a>&nbsp;&nbsp;'; //Ausgabestring, falls Bild existiert
       }
       else {
        $str .= '<a href="index.php?teams-show-'.$r->id.'">'.$r->name.'</a>&nbsp;&nbsp;' ; //Ausgabestring, falls kein Bild vorhanden
       }
      }
    $str = empty($str) ? 'Keine' : $str; //Falls User keiner Gruppe angehört "Keine" ausgeben
    return $str;
    }


    P.S: Der Fehler kommt von dem vergessenen = in Zeile 5 zwinker
    Kein Support per Email oder ICQ!
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Kelevra Mitglied
    Registriert seit
    25.10.2007
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Leider hauts noch nich ganz hin. Statt eines Bildes in der Bildbox wird die Gruppe als String ausgegeben. Wenn man drauf klickt kommt in die Teamübersicht, was meintest du mit dem Fehler in Zeile 5 da is doch nen = ^^. Könnte es vlt. sein, dass in Zeile 7. die " noch mit nem \ vorher hinzugefügt werden muss?


    Zuletzt modifiziert von Kelevra am 24.09.2009 - 20:19:25
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Fire86 Mitglied
    Registriert seit
    25.04.2009
    Beiträge
    543
    Beitragswertungen
    0 Beitragspunkte
    Wenn der Teamname als Link anstatt nem Bild ausgegeben wird, heisst das, dass du der Gruppe im AdminCP kein Bild zugewiesen hast, bzw das Bild nicht mehr existiert.

    Dass man zur Teamübersicht kommt, wenn man draufklickt, ist von mir beabsichtigt.
    Ist nur ne Musterlösung, du musst die Ausgabestrings halt nach deinen Wünschen bearbeiten, das HTML wirste ja wohl alleine hinbekommen.
    Ich hab die entsprechenden Zeilen, die du ändern kannst, ja kommentiert.


    Mit dem fehlenden = meinte ich zu deinem Versuch mit der Team Pic Funktion.
    Meine Funktion ist fehlerfrei. zwinker

    Tipp: Wenn du in PHP bei Strings mit ' anstatt " arbeitest, brauchst du Operatoren innerhalb des Strings nicht mit \ maskieren.
    " machen nur selten Sinn, z.B. bei mysql queries.

    Beispiel
    echo 'Hallo du "wunderbare" Welt!' ;
    echo "Hallo du \"wunderbare\" Welt!" ;

    Ergebnis ist das gleiche: Hallo du "wunderbare" Welt!
    Kein Support per Email oder ICQ!
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Kelevra Mitglied
    Registriert seit
    25.10.2007
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Hehe weisst du wo mein denkfehler lag. Ich hab derzeit nur ein Teambild und da wir noch das hide drin hatten wurde dieses gesuchte Team nicht abgefragt es konnte also nix angezeigt werden. Habe das ganze nochmal bissle angepasst wenn es fertig ist stell ich es hier ein.

    Echt super vielen Dank Fire!
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Fire86 Mitglied
    Registriert seit
    25.04.2009
    Beiträge
    543
    Beitragswertungen
    0 Beitragspunkte
    Kein Problem, wenn ich sehe, dass sich jemand mit der Materie beschäftigt hat, aber alleine nicht weiterkommt, helfe ich immer gerne. lächeln
    Kein Support per Email oder ICQ!
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten