Abfrage für Gruppenmitgliedschaft?

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.
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

ich die ganzen queries ja nicht getestet. und ich verwende das is null nicht oft und hab deshalb damit gerechnet das ne fehlermeldung kommt ;-)

ah
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

saerdnaer hat geschrieben:ich die ganzen queries ja nicht getestet. und ich verwende das is null nicht oft und hab deshalb damit gerechnet das ne fehlermeldung kommt ;-)

ah
Was würde dein Deutschlehrer wohl dazu sagen :lol:
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

hoi nochmal,

ich wollte die Sache noch etwas erweitern..

Wenn es keine Gruppen gibt,soll natürlich keine leere Page erscheinen sondern eine entsprechende Meldung "There are no groups".

daher habe ich das jetzt mal so probiert:

Code: Alles auswählen

	//
	// Select if we have groups...
	//
	
	$sql = "SELECT *
		  FROM " . GROUPS_TABLE . ";
	$result = mysql_query($sql);

	if ( $row = $db->sql_fetchrow($result) )
	{

		//
		// Select User's Group Memberships
		//

		$sql = "SELECT g.group_id, g.group_name, g.group_description, g.group_type
			  FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
			  WHERE ug.user_id = '" . $userdata['user_id'] . "' 
			  AND ug.group_id = g.group_id
			  AND g.group_single_user = '0'"; 
		$result = mysql_query($sql);

		$groupmemberships = array();
	
		while ( $row = $db->sql_fetchrow($result) )
		{
			$groupmemberships['id'] = $row['group_id'];
			$groupmemberships['name'] = $row['group_name'];
			$groupmemberships['group_desc'] = $row['group_description'];
			$groupmemberships['group_type'] = $row['group_type'];
			$groupmemberships['checkbox'] = "<input type='checkbox' name='groups[]' value='$groupmemberships[id]'>";

			if ( $groupmemberships[group_type] == '1' || $groupmemberships[group_type] == '2' )
			{
				$groupmemberships['checkbox'] = '';
			}
	
			$template->assign_block_vars('groups', array(
				'GROUP_ID' => $groupmemberships['id'],
				'GROUP_NAME' => $groupmemberships['name'],
				'GROUP_DESCRIPTION' => $groupmemberships['group_desc'],
				'GROUP_CHECKBOX' => $groupmemberships['checkbox']
			));	
		}

		//
		// Select user's non Memberships
		//

		$sql = "SELECT g.group_id, g.group_name, g.group_description, g.group_type 
			FROM phpbb_groups g LEFT JOIN phpbb_user_group ug ON ug.group_id = g.group_id AND ug.user_id = '$userdata[user_id]' 	
			WHERE g.group_single_user = 0 
			AND ug.group_id IS NULL";
		$result = mysql_query($sql); 

		$groupnonmemberships = array(); 

		while ( $row = $db->sql_fetchrow($result) ) 
		{	 
			$groupnonmemberships[] = $row; 

			$groupnonmemberships['checkbox'] = "<input type='checkbox' name='groups[]' value='$row[group_id]'>";

			if ( $row[group_type] == '1' || $row[group_type] == '2' )
			{
				$groupnonmemberships['checkbox'] = '';
			}

			$template->assign_block_vars('groupsnon', array( 
				'GROUP_ID' => $row['group_id'], 
				'GROUP_NAME' => $row['group_name'],
				'GROUP_TYPE' => $row['group_type'],
				'GROUP_DESCRIPTION' => $row['group_description'],
				'GROUP_CHECKBOX' => $groupnonmemberships['checkbox'],
			)); 
		} 

		$template->set_filenames(array( 
				'body' => 'c_groups_body.tpl' 
		));
		$template->pparse('body');
	}
	else
	{
		$template->assign_vars(array(
			'C_MESSAGE' => "There are no existing User Groups.<br />
					<a href='index.php' class='gensmall'>Click here to return to the Main Page</a>",
			'C_MESSAGE_TITLE' => "No Groups Existing"
		));
		$template->set_filenames(array( 
				'body' => 'c_message_body.tpl' 
		));
		$template->pparse('body');
	}
aber das will nicht,ich bekomme einen Parse Error in dieser Zeile:

Code: Alles auswählen

$sql = "SELECT g.group_id, g.group_name, g.group_description, g.group_type
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Benutzeravatar
MrMind
Mitglied
Beiträge: 464
Registriert: 29.11.2003 17:14
Wohnort: Darmstadt/Odw
Kontaktdaten:

Beitrag von MrMind »

kratzer54847 hat geschrieben:aber das will nicht,ich bekomme einen Parse Error in dieser Zeile:

Code: Alles auswählen

$sql = "SELECT g.group_id, g.group_name, g.group_description, g.group_type
Du hast zwei SQL-Anweisungen die so anfangen, sag mal genauer, welche SQL-Anweisung es ist und schreibe mal die genaue Fehlermeldung.

Mfg
MrMind
Selbst ist der Coder
Coder unter Linux
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

die fehlerhafte Zeile ist die erste Zeile nach dem

//
// Select User's Group Memberships
//

die erste Abfrage prüft,ob überhaupt Gruppen vorhanden sind,die zweite ruft ab,in welchen Gruppen ein User ist.
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Benutzeravatar
Schumi
Ehemaliges Teammitglied
Beiträge: 4925
Registriert: 07.10.2002 12:37

Beitrag von Schumi »

Ersetze

Code: Alles auswählen

   $sql = "SELECT *
        FROM " . GROUPS_TABLE . "; 
durch

Code: Alles auswählen

   $sql = "SELECT *
        FROM " . GROUPS_TABLE; 
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

vielen Dank Schumi das war der Fehler.


edit: jetzt ist zwar der Parse Error weg,aber er zeigt mir trotzdem die Übersicht an,selbst wenn keine Gruppen da sind :roll: und das wollte ich ja eigentlich vermeiden.

Code: Alles auswählen

	//
	// Select if we have groups...
	//
	
	$sql = "SELECT * 
	FROM " . GROUPS_TABLE; 
	$result = mysql_query($sql);

	if ( $row = $db->sql_fetchrow($result) )
	{

		//
		// Select User's Group Memberships
		//

		$sql = "SELECT g.group_id, g.group_name, g.group_description, g.group_type
			  FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
			  WHERE ug.user_id = '" . $userdata['user_id'] . "' 
			  AND ug.group_id = g.group_id
			  AND g.group_single_user = '0'"; 
		$result = mysql_query($sql);

		$groupmemberships = array();
	
		while ( $row = $db->sql_fetchrow($result) )
		{
			$groupmemberships['id'] = $row['group_id'];
			$groupmemberships['name'] = $row['group_name'];
			$groupmemberships['group_desc'] = $row['group_description'];
			$groupmemberships['group_type'] = $row['group_type'];
			$groupmemberships['checkbox'] = "<input type='checkbox' name='groups[]' value='$groupmemberships[id]'>";

			if ( $groupmemberships[group_type] == '1' || $groupmemberships[group_type] == '2' )
			{
				$groupmemberships['checkbox'] = '';
			}
	
			$template->assign_block_vars('groups', array(
				'GROUP_ID' => $groupmemberships['id'],
				'GROUP_NAME' => $groupmemberships['name'],
				'GROUP_DESCRIPTION' => $groupmemberships['group_desc'],
				'GROUP_CHECKBOX' => $groupmemberships['checkbox']
			));	
		}

		//
		// Select user's non Memberships
		//

		$sql = "SELECT g.group_id, g.group_name, g.group_description, g.group_type 
			FROM phpbb_groups g LEFT JOIN phpbb_user_group ug ON ug.group_id = g.group_id AND ug.user_id = '$userdata[user_id]' 	
			WHERE g.group_single_user = 0 
			AND ug.group_id IS NULL";
		$result = mysql_query($sql); 

		$groupnonmemberships = array(); 

		while ( $row = $db->sql_fetchrow($result) ) 
		{	 
			$groupnonmemberships[] = $row; 

			$groupnonmemberships['checkbox'] = "<input type='checkbox' name='groups[]' value='$row[group_id]'>";

			if ( $row[group_type] == '1' || $row[group_type] == '2' )
			{
				$groupnonmemberships['checkbox'] = '';
			}

			$template->assign_block_vars('groupsnon', array( 
				'GROUP_ID' => $row['group_id'], 
				'GROUP_NAME' => $row['group_name'],
				'GROUP_TYPE' => $row['group_type'],
				'GROUP_DESCRIPTION' => $row['group_description'],
				'GROUP_CHECKBOX' => $groupnonmemberships['checkbox'],
			)); 
		} 

		$template->set_filenames(array( 
				'body' => 'groups_body.tpl' 
		));
		$template->pparse('body');
	}
	else
	{
		$template->assign_vars(array(
			'MESSAGE' => "There are no existing User Groups.<br />
					<a href='index.php' class='gensmall'>Click here to return to the Main Page</a>",
			'MESSAGE_TITLE' => "No Groups Existing"
		));
		$template->set_filenames(array( 
				'body' => 'message_body.tpl' 
		));
		$template->pparse('body');
	}
mfg Johny
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

ok habs in Eigenregie gelöst,dafür stellt sich mit jetzt ein weiteres Problem:

Ich habe noch eine Funktion eingebaut,mit der die User den Usergroups beitreten können. Dies geschieht über eine Checkbox neben dem UG-Namen. Das Problem ist jetzt aber....wie generiere ich die SQL-Queries?

die einzelnen IDs werden in einem Array gespeichert.
Ich stelle mir jetzt eine Schleife vor,die solange läuft,bis alle im Array enthaltenen Werte eingefügt sind.

Wenn der Array also die IDs 1,2 und 3 enthält,sollen die SQL-Abfragen dementsprechend folgendermaßen lauten:

$sql = "INSERT INTO " . USER_GROUPS_TABLE . " (user_id, group_id)
VALUES('$userdata[user_id]', "$gruppenid";

wie ist das zu ermöglichen?
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

kratzer54847 hat geschrieben:die einzelnen IDs werden in einem Array gespeichert.
Ich stelle mir jetzt eine Schleife vor,die solange läuft,bis alle im Array enthaltenen Werte eingefügt sind.

Wenn der Array also die IDs 1,2 und 3 enthält,sollen die SQL-Abfragen dementsprechend folgendermaßen lauten:

$sql = "INSERT INTO " . USER_GROUPS_TABLE . " (user_id, group_id)
VALUES('$userdata[user_id]', "$gruppenid";

wie ist das zu ermöglichen?
Soll das eine ernstgemeinte Frage sein in diesem Sachverhalt?
Bzw. eine Frage die sich selbst beantwortet?

Du hast 3 Schleifen zur Auswahl:
while
foreach
for

Kann hier aber nirgends Eigeniniative sehen, daher nunja....
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

meine Eigeninitiative hat sich ausgezahlt...habs hinbekommen mit ner foreach-Schleife
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Antworten

Zurück zu „Coding & Technik“