我需要一些帮助。我需要创建一个下拉列表,然后在提交选项时必须运行 php 脚本。复杂之处在于我无法对任何值进行硬编码。我需要它被"动态创建"
配置.php
$number_Of_Option="3"
$Option_One_Name="Cars"
$Option_One_Year="2000"
$Option_One_Colour="Blue"
$Option_Two_Name="Houses"
$Option_Two_Year="2003"
$Option_Two_Colour="Pink"
$Option_Three_Name="Bikes"
$Option_Three_Year="1990"
$Option_Three_Colour="Orange"
现在我需要将下拉菜单中的名称设置为"汽车"、"房屋"、"自行车",但它们必须基于变量,因此如果我更改"汽车",它就会改变。
然后,当提交选项(在本例中为选项二)时,我需要将 $Option_Two_Year 和 $Option_Two_Color 传递给脚本,其中这两个变量是脚本中的变量。因此,脚本始终相同,但是如果选择下拉一个,则使用变量 1,如果为 2,则使用变量 2 等。我还需要它适用于无限数量的选项,以便随时进入配置.php并添加另一个带有自己的变量的选项。如果更容易或必要,它可以使用数组和jquery。谢谢
使用以下代码制作一个外部文件,例如选项.php:
$options = array();
$options["cars"] = array("2000","blue");
$options["houses"] = array("2003","pink");
$options["bikes"] = array("1990","orange");
将此文件包含在表单页面和分析脚本中,使用 include("options.php");
在表单页面中,执行以下操作:
include("options.php");
echo '<select name="option">';
foreach($options as $name => $values)
{ echo '<option value="' .$name .'">' .$name .'</option>';
}
echo '</select>';
在解析脚本中,执行以下操作:
include("options.php");
$chosenValue = $_POST['option'];
list($year,$colour) = $options[$chosenValue];
现在,$year
和$colour
将包含具有所选名称的选项的年份和颜色。
你知道他们为此发明了数组吗?如果你有一个相当新版本的PHP(我认为1.0或更高版本;)),你可以存储这些数据,如:
$options = array(
'Cars' => array('Year'=>'2000', 'Colour'=>'Blue'),
'Houses' => array('Year'=>'2003', 'Colour'=>'Pink'),
'Bikes' => array('Year'=>'1990', 'Colour'=>'Orange'));
然后,您可以获得所选选项,并通过该选项找到匹配的值:
$option = $_GET['option'];
if (array_key_exists($option, $options))
{
$selectedYear = $options[$option]['Year'];
$selectedColour = $options[$option]['Colour'];
// Process them.
}
如果您不想(或不允许)使用数组,则需要匹配每个变量:
if ($option === $Option_One_Name)
{
$selectedYear = $Option_One_Year;
$selectedColour = $Option_One_Colour;
}
elseif ($option === $Option_Two_Name)
{
...
当然,您可以加快一点速度。您可以制作一个数字数组,并通过它们的名称获取匹配的变量
$numbers = array('One', 'Two', 'Three');
foreach($numbers as $number)
{
$optionVar = 'Option_' . $number . '_Name';
if ($option === $$optionVar)
{
$yearVar = 'Option_' . $number . '_Year';
$selectedYear = $$yearVar;
...
}
}
该代码更复杂,但如果获得更多选项,则不需要扩展。您只需要更新数字数组。但是,正如你所看到的,使用数组会更容易。