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)
php
BB3, oder?
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)
php
BB3, oder?
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