[erledigt] suche "user ist mitglied snippet"

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
QO
Mitglied
Beiträge: 304
Registriert: 21.02.2006 12:59
Kontaktdaten:

[erledigt] suche "user ist mitglied snippet"

Beitrag von QO »

Servus

Ich möchte eine funktion bei mir im Forum einbauen, finde jedoch nichts in diese richtung.

Es soll überprüfen ob ein user mitglied/gruppemleiter einer gruppe ist. Dazu soll ein varchar mit den gruppen id's zum überprüfen verwendet werden , die mit "," getrennt werden z.B. '1,8,25' und in der DB gespeichert werden

Als ergebniss soll ein string o.ä. weitergegeben werden, den man dann in einer if-funktion weiterverwenden kann.

Ich habe vom Admin_userlist_mod ein teil bereits lösen können, aber es funktioniert nicht wenn ichs in einer anderen php-datei verwende. es gibt dann ne fehlermeldung.

Folgenden Code hab ich herrausgefiltert/angepasst

Code: Alles auswählen

			$test = '82';
			$ist_gruppenmitglied = 'n';
			$group_sql = "SELECT * FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
				WHERE ug.user_id = " . $row['user_id'] . "
				 AND g.group_single_user <> 1
				 AND g.group_id = ug.group_id
				 AND g.group_id = $test";
				
			if( !($group_result = $db->sql_query($group_sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not query groups', '', __LINE__, __FILE__, $group_sql);
			}
			while ( $group_row = $db->sql_fetchrow($group_result) )
			{
				//
				// assign the group varibles
				//
				if ( $group_row['group_moderator'] == $row['user_id'] )
				{
					$ist_gruppenmitglied = 'j';
				}
				else if ( $group_row['user_pending'] == true )
				{
				}
				else
				{
					$ist_gruppenmitglied = 'j';
				}

			}
  • $test soll die gruppen-id sein
    $ist_gruppenmitglied ändert sich von "n" zu "j" wenn user mitglied einer der gesuchten $test-gruppe ist


Problem 1: Ich erhalte folgende fehlermeldung sobald es in einer anderen php-datei ist:

Code: Alles auswählen

Could not query groups

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND g.group_single_user <> 1 AND g.group_id = ug.group_id AND g.grou' at line 3

SELECT * FROM phpbb_user_group ug, phpbb_groups g WHERE ug.user_id = AND g.group_single_user <> 1 AND g.group_id = ug.group_id AND g.group_id = 82
Problem 2: Wie ersetzte ich $test mit dem wert aus der DB?


Hoffe ihr könnt mir helfen.

QO
Zuletzt geändert von QO am 08.08.2006 23:13, insgesamt 1-mal geändert.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Soll es "ein Mitglied" sein oder der aktuell eingeloggte Benutzer?
Wenn es der aktuelle Benutzer sein soll, musst du lediglich das

Code: Alles auswählen

$row['user_id']
mit

Code: Alles auswählen

$userdata['user_id']
ersetzen. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
QO
Mitglied
Beiträge: 304
Registriert: 21.02.2006 12:59
Kontaktdaten:

Beitrag von QO »

DANKE

ja, ein aktueller. Also, Problem 1 ist gelöst.

Wie mache ich das jetzt mit den werten die in der DB gespeichert werden, also wie ersetzte ich $test?
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Du könntest das ganze z.B. in der phpbb_config speichern. Wie das geht, steht im zweiten Teil dieses Beitrags. :wink:

Edit: Und schon gibt's ein Snippet dafür. *g*
http://www.phpbb.de/viewtopic.php?t=127917
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
QO
Mitglied
Beiträge: 304
Registriert: 21.02.2006 12:59
Kontaktdaten:

Beitrag von QO »

Danke für deine schnelle hilfe

Leider mache ich trotzdem etwas falsch

Also, ich hab ne neue tabelle gemacht:


Code: Alles auswählen

CREATE TABLE `phpbb_test` (
  `test_id` mediumint(8) NOT NULL auto_increment,
  `test_name` varchar(40) collate latin1_general_ci NOT NULL default '',
  PRIMARY KEY  (`test_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=89 ;

-- 
-- Daten für Tabelle `phpbb_test`
-- 

INSERT INTO `phpbb_test` VALUES (1, '1,2,3,82');
INSERT INTO `phpbb_test` VALUES (2, '10');
  • 82 ist die testgruppen-id in der der user mitglied ist
ich habs auch mit der config-tabelle probiert, aber irgendwie wills das auch net.

Der code dann müsste doch so lauten?

Code: Alles auswählen

         $ist_gruppenmitglied = 'n';
         $group_sql = "SELECT * FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
            WHERE ug.user_id = " . $userdata['user_id'] . "
             AND g.group_id = " . $board_config['test'] . "
			 AND g.group_single_user <> 1
             AND g.group_id = ug.group_id";
             
            
         if( !($group_result = $db->sql_query($group_sql)) )
         {
            message_die(GENERAL_ERROR, 'Could not query groups', '', __LINE__, __FILE__, $group_sql);
         }
         while ( $group_row = $db->sql_fetchrow($group_result) )
         {
            //
            // assign the group varibles
            //
            if ( $group_row['group_moderator'] == $userdata['user_id'] )
            {
               $ist_gruppenmitglied = 'j';
            }
            else if ( $group_row['user_pending'] == true )
            {
            }
            else
            {
               $ist_gruppenmitglied = 'j';
            }

         } 
bzw. man setzt vorher $board_config['test'] ein und ruft 'test' im sql auf, oder? Jedenfalls hat das und div. andere versuche kein erfolg gebracht :(

EDIT: Du meinst mit dem snipet von dir das ich wie oben es mache nur das ich vorn z.B. $test = $board_config['test']? hab ich auch schon probiert.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Was willst du denn jetzt genau machen? Soll für jeden Benutzer eine andere Überprüfung erfolgen oder immer die gleiche?
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
QO
Mitglied
Beiträge: 304
Registriert: 21.02.2006 12:59
Kontaktdaten:

Beitrag von QO »

Hi

Hmmmm, wie beschreib ichs am Besten. Also das ganze wird zur Gruppenverwaltung bei mir benötigt damit es für den user übersichtlicher wird (Gruppen werden bei mir u.a. für Gruppenmails verwendet)




vereinfachtes Bsp. meiner Gruppen

Hauptgruppe A
  • Sub-gruppe1
    Subgruppe2
    Subgruppe3
HauptgruppeB
  • Sub-gruppe1
    Subgruppe2
Hauptgruppe C
  • Sub-gruppe1
    Subgruppe2
    Subgruppe3
Da die "Sub-gruppen" nur von den usern aus der Hauptgruppe (manchmal mehrere) benutzt werden kann egal ob mitglied der gruppe oder nicht, will ich diese von den anderen Gruppen verstecken.

Es ist alles soweit vorbereitet, d.h. ich kann bereits die id's im acp eingeben, es wird gespeichert und lässt sich ändern. Das gleiche gilt auch für die groupcp.php. Es läuft soweit.

Ich hab die Testtabelle oben als allgemeines bsp. angegeben. In meinem Fall werden die Gruppen-ID's auch in der gruppentabelle eingefügt, d.h. jede gruppentabelle erhält zusätzlich den wert der gruppen die die entsprechenden rechte später hat.

Jedenfalls reicht mein php-wissen nur nicht aus um den Wert aus der db aufzurufen und dann den array in meiner abfrage zu setzten. :( Mit learning by doing hab ich diesen schritt nochnicht lösen können.

Hoffe das hilt jetzt weiter. Wenn nicht, dann mach ich das mal zeichnerisch ;)

QO
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

So wie ich das jetzt verstanden habe, fehlt dir im Moment nur so etwas:

Code: Alles auswählen

$group_sql = "SELECT COUNT(group_id) AS count
	FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
	WHERE ug.user_id = " . $userdata['user_id'] . "
		AND g.group_id IN(" . $board_config['test'] . ")
		AND g.group_single_user <> 1
		AND g.group_id = ug.group_id";
if (!$group_result = $db->sql_query($group_sql))
{
	message_die(GENERAL_ERROR, 'Could not query groups', '', __LINE__, __FILE__, $group_sql);
}
$group_status = ($db->sql_fetchfield('count', 0, $result)) ? true : false;
(Ich habe einfach nochmal dein $board_config-Beispiel übernommen, denn deinem Konzept konnte ich nicht zu 100% folgen. *g*
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
QO
Mitglied
Beiträge: 304
Registriert: 21.02.2006 12:59
Kontaktdaten:

Beitrag von QO »

DANKE
S2B hat geschrieben: (Ich habe einfach nochmal dein $board_config-Beispiel übernommen, denn deinem Konzept konnte ich nicht zu 100% folgen. *g*
geht mir genauso :D und deins hab ich entweder nicht richtig eingesetzt, oder es ging auch nicht.

Jedenfals konnte dank deinen letzten code und weitere 2 Stunden experimentieren ne funktionierende lösung finden.

Jetzt muss ich nur noch alles säubern und dann gibts nen update von meinem verwaltungsgruppen mod...

Nochmals, danke

QO
Antworten

Zurück zu „Coding & Technik“