Seite 1 von 2

Datenbankabfrage mit Hilfe von Auswahlfeld

Verfasst: 16.02.2008 13:13
von issjut
Hallo,
wie kann ich denn eine bestimmte Datenbankabfrage generieren in der ich die Ausgabe nach einer Auswahl in einem vorgegebenen Feld steuere.

Also im Grunde z.b. so etwas...

[ externes Bild ]

wie bekomme ich die AUSWAHL in die Abfrage??

Code: Alles auswählen

$sql = 'SELECT user_id, username, user_colour, user_avatar, user_gender, user_avatar_type, user_avatar_width, user_avatar_height 
				FROM ' . USERS_TABLE . "
				WHERE user_avatar <> ''
                                AND [!]AUSWAHL1[!] "
                                AND [!]AUSWAHL2[!] "
				ORDER BY RAND() LIMIT 5";
			$result = $db->sql_query($sql);

Verfasst: 16.02.2008 14:05
von S2B
Wie jedes Eingabefeld in einem Formular über $_POST['name_des_feldes'] (bei phpBB2 über $HTTP_POST_VARS['name_des_feldes'], bei phpBB3 über request_var('name_des_feldes', 'Standardwert'));

Verfasst: 16.02.2008 14:37
von issjut
Ok, wäre für php3 (sry vergessen dazu zu schreiben)

ich muss leider noch mal nachfragen, da ich auf dem Gebiet das erste mal etwas machen will ;-)

könntest Du mir das mal anhand meinses Beispiels in die Abfrage"einsetzen"?

Vielen Dank schonmal!

Verfasst: 16.02.2008 15:54
von S2B
issjut hat geschrieben:Ok, wäre für php3 (sry vergessen dazu zu schreiben)
phpBB3, oder? :wink:

Wie speicherst du denn das Geschlecht in der DB und was soll genau ausgelesen werden?

Verfasst: 16.02.2008 16:39
von issjut
S2B hat geschrieben:
issjut hat geschrieben:Ok, wäre für php3 (sry vergessen dazu zu schreiben)
phpBB3, oder? :wink:

Wie speicherst du denn das Geschlecht in der DB und was soll genau ausgelesen werden?
ja logo + BB ;)

also alle Daten die ausgelesen werden sollen befinden sich in Tabelle php_users --> USERS_TABLE

Das Geschlecht bei user_gender
Männer = 1, Frauen = 2

Das Alter müsste man wohl anhand des Geburtsdatums errechnen...
user_birthday Format wäre z.b. 16- 5-1986

für die Ausgabe habe ich eigentlich schon einen fertigen Code...
Gibt eine Anzahl an Usern und ihre Avatare aus:

Code: Alles auswählen

$last_avatar = '';
			$last_avatar_row = array();
			// Zeigt die x User absteigend sortiert nach der ID
			$sql = 'SELECT user_id, username, user_colour, user_avatar, user_avatar_type, user_avatar_width, user_avatar_height 
				FROM ' . USERS_TABLE . " 
				WHERE user_type <> 2
                                AND ...........??? (Auswahlfeld1)
                                ABD ...........??? (Auswahlfeld2)
				ORDER BY user_id DESC LIMIT 18";
			$result = $db->sql_query($sql);

			while ($row = $db->sql_fetchrow($result))
			{
				$last_avatar_row[] = $row;
			}
			$db->sql_freeresult($result);

	$template->assign_block_vars('last_avatar_block', array());
	
	
	for ($i = 0; $i < sizeof($last_avatar_row); $i += 6) //6 is columns per page
	{
		$template->assign_block_vars('last_avatar_block.last_avatar_row', array());

		for ($j = $i; $j < ($i + 6); $j++) // 6 is columns per page
		{
			if( $j >= sizeof($last_avatar_row) )
			{
				$template->assign_block_vars('last_avatar_block.last_avatar_row.nousercol', array());
				$template->assign_block_vars('last_avatar_block.last_avatar_row.usernodetail', array());
				continue;
				//break;
			}
			
				$last_avatar_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $last_avatar_row[$j]['user_id']);
				$last_avatar = '<a onclick="openpopup(this.href); return false" href="' . $last_avatar_url . '">' . get_user_avatar($last_avatar_row[$j]['user_avatar'], $last_avatar_row[$j]['user_avatar_type'], $last_avatar_row[$j]['user_avatar_width'], $last_avatar_row[$j]['user_avatar_height'], $last_avatar_row[$j]['username']) . '</a>';
				
						
			$template->assign_block_vars('last_avatar_block.last_avatar_row.usercol', array(
					'LAST_USERNAME'	=> get_username_string('username', $last_avatar_row[$j]['user_id'], $last_avatar_row[$j]['username'], $last_avatar_row[$j]['user_colour']),
					'LAST_AVATAR'	=> $last_avatar,
				)
			);

			}
		}

ich müsste oben eben nur die Variablen der Auswahl rein bekommen, damit die ausgabe dementsprechend gefiltert wird

Verfasst: 16.02.2008 17:08
von S2B

Code: Alles auswählen

<select name="gender">
  <option value="1">Mann</option>
  <option value="2">Frau</option>
</select>
und der PHP-Code dazu:

Code: Alles auswählen

$gender = request_var('gender', 1);
$gender = ($gender == 2) ? 2 : 1;

$sql = 'SELECT ...
   AND user_gender = ' . $gender . '
   ...

Verfasst: 16.02.2008 17:34
von issjut
Ich versuche es gleich mal

vielen Dank

Verfasst: 16.02.2008 21:06
von issjut
hmmm... ich denke die Frage ist recht doof, aber ich komme an dieser stelle nicht weiter...

Habe jetzt nun eine Seite... nennen wir sie mal search.php in der ich diesen code integriert habe.

Code: Alles auswählen

$gender = request_var('gender', 1);
$gender = ($gender == 2) ? 2 : 1; 
$last_avatar = '';
			$last_avatar_row = array();
			// Zeigt x User absteigend sortiert nach der ID 
			$sql = 'SELECT user_id, username, user_colour, user_avatar, user_avatar_type, user_avatar_width, user_avatar_height 
				FROM ' . USERS_TABLE . " 
				WHERE user_type <> 2
				AND user_gender = ' . $gender . ' 
				ORDER BY user_id DESC LIMIT 18";
			$result = $db->sql_query($sql);

			while ($row = $db->sql_fetchrow($result))
			{
				$last_avatar_row[] = $row;
			}
			$db->sql_freeresult($result);

	$template->assign_block_vars('last_avatar_block', array());
	
	
	for ($i = 0; $i < sizeof($last_avatar_row); $i += 6) //6 is columns per page
	{
		$template->assign_block_vars('last_avatar_block.last_avatar_row', array());

		for ($j = $i; $j < ($i + 6); $j++) // 6 is columns per page
		{
			if( $j >= sizeof($last_avatar_row) )
			{
				$template->assign_block_vars('last_avatar_block.last_avatar_row.nousercol', array());
				$template->assign_block_vars('last_avatar_block.last_avatar_row.usernodetail', array());
				continue;
				//break;
			}
			
				$last_avatar_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $last_avatar_row[$j]['user_id']);
				$last_avatar = '<a onclick="openpopup(this.href); return false" href="' . $last_avatar_url . '">' . get_user_avatar($last_avatar_row[$j]['user_avatar'], $last_avatar_row[$j]['user_avatar_type'], $last_avatar_row[$j]['user_avatar_width'], $last_avatar_row[$j]['user_avatar_height'], $last_avatar_row[$j]['username']) . '</a>';
				
						
			$template->assign_block_vars('last_avatar_block.last_avatar_row.usercol', array(
					'LAST_USERNAME'	=> get_username_string('username', $last_avatar_row[$j]['user_id'], $last_avatar_row[$j]['username'], $last_avatar_row[$j]['user_colour']),
					'LAST_AVATAR'	=> $last_avatar,
				)
			);

			}
		}
und im template habe ich...

Code: Alles auswählen

<select name="gender">
  <option value="1">Mann</option>
  <option value="2">Frau</option>
</select>
Ich hoffe soweit hab ich es richtig verstanden....!?!?

nun fehlt mir doch aber noch eine Art "Submit" Button mit dem ich die ganze Sache ausführe, oder?

Verfasst: 16.02.2008 22:03
von Dr.Death
Bitte schau mal in: KB:16 - Kapitel Topic Bumping.....

Verfasst: 17.02.2008 14:38
von S2B