Seite 2 von 3

Verfasst: 20.11.2004 18:00
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

Verfasst: 21.11.2004 12:06
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:

Verfasst: 21.11.2004 15:19
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

Verfasst: 21.11.2004 16:51
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

Verfasst: 21.11.2004 18:15
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.

Verfasst: 21.11.2004 21:14
von Schumi
Ersetze

Code: Alles auswählen

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

Code: Alles auswählen

   $sql = "SELECT *
        FROM " . GROUPS_TABLE; 

Verfasst: 21.11.2004 21:20
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

Verfasst: 23.11.2004 16:30
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?

Verfasst: 23.11.2004 19:10
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....

Verfasst: 23.11.2004 19:14
von kratzer54847
meine Eigeninitiative hat sich ausgezahlt...habs hinbekommen mit ner foreach-Schleife