#php #database #drop-down-menu
#php #База данных #выпадающее меню
Вопрос:
У меня есть php-скрипт, который подключается к моей базе данных и имеет два выпадающих меню. Теперь то, что я хочу сделать, это, основываясь на пользовательском выборе, запускать запросы к пользовательскому выбору. Параметры в выпадающих меню относятся к разным странам.
Я хочу сохранить эти входные данные и использовать это значение для выполнения запроса. Т.е. если пользователь выберет США и Бразилию, я выполню некоторый запрос типа select * из моей базы данных, где country == выбор 1 и выбор 2 (Бразилия и США).
Как именно мне сохранить пользовательский выбор из выпадающего меню и использовать его для выполнения подобного запроса? Меня больше беспокоит фактическая настройка запроса, чем написание запроса.
Будем признательны за любую помощь!
Мой код до сих пор:
<html>
<head>
<title> Welcome! </title>
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<Form Name ="form1" Method ="POST" ACTION = "page1.php">
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link)
{
$output = 'Unable to connect to the database server.';
include 'output.html.php';
exit();
}
mysql_select_db('top recipes');
if (!mysql_select_db('top recipes'))
{
$output = 'Unable to locate the joke database.';
include 'output.html.php';
exit();
}
function dropdown( $name, array $options, $selected=null )
{
/*** begin the select ***/
$dropdown = '<select name="'.$name.'" id="'.$name.'">'."n";
$selected = $selected;
/*** loop over the options ***/
foreach( $options as $key=>$option )
{
/*** assign a selected value ***/
$select = $selected==$key ? ' selected' : null;
/*** add each option to the dropdown ***/
$dropdown .= '<option value="'.$key.'"'.$select.'>'.$option.'</option>'."n";
}
/*** close the select ***/
$dropdown .= '</select>'."n";
/*** and return the completed dropdown ***/
return $dropdown;
}
function dropdowntwo( $nametwo, array $optionstwo, $selectedtwo=null )
{
/*** begin the select ***/
$dropdowntwo = '<select name="'.$nametwo.'" id="'.$nametwo.'">'."n";
$selectedtwo = $selectedtwo;
/*** loop over the options ***/
foreach( $optionstwo as $key=>$option )
{
/*** assign a selected value ***/
$select = $selectedtwo==$key ? ' selectedtwo' : null;
/*** add each option to the dropdown ***/
$dropdowntwo .= '<option value="'.$key.'"'.$select.'>'.$option.'</option>'."n";
}
/*** close the select ***/
$dropdowntwo .= '</select>'."n";
/*** and return the completed dropdown ***/
return $dropdowntwo;
}
?>
<form>
<?php
$name = 'my_dropdown';
$options = array( 'USA', 'Brazil', 'Random' );
$selected = 1;
echo dropdown( $name, $options, $selected );
$nametwo = 'my_dropdowntwo';
$optionstwo = array( 'USA', 'Brazil', 'Random' );
$selectedtwo = 1;
echo dropdowntwo( $nametwo, $optionstwo, $selectedtwo );
?>
<INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Select">
</form>
Ответ №1:
Это зависит от того, когда вы хотите выполнить свой запрос. Если запрос будет выполнен после обычной отправки, это просто обработает отправленный запрос.
<?php
if (!empty($_POST['my_dropdown'])) {
$country1 = $_POST['my_dropdown'];
// validate if $country1 is in allowed values or use at least
$country1 = mysql_real_escape_string($country1);
}
// similar for my_dropdowntwo => $country2
// process only with both values?
if (!empty($country1) amp;amp; !empty($country2)) {
// you can strore it into $_SESSION if you want - you need to run session_start() before headers!
$_SESSION['country1'] = $country1;
// or store only to cookies if it should be perzistent
setcookie("country1", $country1, time() 3600,, '/');
// or you can use use variables directly if you want to run query now -> use $country1 or $country2 variabes
}
// if you want to use later stored variables
// first test if you have both variables ...
// then
$query = sprintf("SELECT something FROM someTable where country = '%s' AND country2 = '%s', $_SESSION['country1'], $_SESSION['country2']);
// or use $_COOKIE['country1'] if you use cookies instead
// ...
?>
Это ваше приложение будет больше, чем эта отдельная страница, вам, вероятно, следует прочитать что-нибудь о популярном сегодня MVC или использовать какой-нибудь фреймворк php, а не смешивать код подобным образом 🙂