根据用户通过 config.php 输入动态创建的下拉列表


Dynamically created drop downs depending on user input through config.php

我需要一些帮助。我需要创建一个下拉列表,然后在提交选项时必须运行 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;
    ...
  }
}

该代码更复杂,但如果获得更多选项,则不需要扩展。您只需要更新数字数组。但是,正如你所看到的,使用数组会更容易。