2011-05-19 81 views
0

我需要一些帮助。我需要创建一个下拉列表,然后在提交选项时必须运行一个php脚本。复杂的是我无法硬编码任何值。我需要的是“动态创建”根据用户输入通过config.php动态创建下拉菜单

的config.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_Colour传递给脚本,其中这两个变量是脚本中的变量。所以脚本总是相同的,但是如果选择下拉选项,那么它使用变量1,如果是2,那么它使用变量2等。我也需要它为无限数量的选项工作,所以在任何时候我可以进入配置.php并添加另一个选项和自己的变量。如果更容易或者更有必要,它可以使用数组和jquery。 谢谢

+0

你有没有考虑过使用数组? – alex 2011-05-19 11:07:35

+0

我不太确定你的意思,但是最好使用$ Options = array()选项来创建一个数组。 $ Options [0] = array(); $ Options [0] ['Name'] =“Cars”; $ Options [0] ['Year'] =“2000”;'等 – Fender 2011-05-19 11:11:14

+0

阵列很好,但我不知道如何做到这一点,所以我正在寻找帮助.. – Michael 2011-05-19 11:18:53

回答

0

制作一个外部文件,例如。 options.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将包含所选名称的选项的年份和颜色。

+0

谢谢我会试试这个 – Michael 2011-05-19 11:27:52

+0

如何创建提交按钮?一个正常的HTML吗? – Michael 2011-05-19 11:32:27

+0

我收到此行的未定义偏移量 list($ year,$ color)= $ options [$ selectedValue]; – Michael 2011-05-19 11:43:11

0

你知道他们发明了这个数组吗?如果你有一个比较新的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; 
    ... 
    } 
} 

该代码是更复杂的获取匹配的变量,但它不会需要扩大,如果你得到更多的选择。你只需要更新Numbers数组。 但是,正如你所看到的那样,使用数组会更容易。

+0

我以为数组会更容易,以前从未使用过它们。我的PHP知识前几天开始,所以不想发布一个让人困惑的问题,因为我的数组没有意义。 – Michael 2011-05-19 11:24:34