在供应商下拉菜单中,我需要根据用户在上一屏幕输入的内容动态添加“已选择”。我有我认为循环基本上看起来像但我不能让它工作。任何帮助将不胜感激,我看了其他的例子,但他们不是这样的。这是我的代码:
<?php
$set_date =$_POST['set_date'];
include "../include/setup.inc.php";
$query="select * from quote_distro where set_date ='2011-10-05'";
$result = mysql_query($query);
if (!$result) {echo "<p><b>".$query ."</b></p>";echo 'MySQL Error: ' . mysql_error(); return;}
echo '<br /><br />';
echo '<form name="edit_quote_setting_'.$row['qdid'].'" action="'.$self.'" method="post"><table align="center" border="1" width="800px">
<tr><td width="10%">Email:</td><td width="20%"><input type="text" MAXLENGTH=40 size="30" name="email" value="'.$row['agent_email'].'"></td>
<td width="10%">#Quote:</td><td width="10%"><input type="text" MAXLENGTH=4 size="3" name="num_quote" value="'.$row['num_quote'].'"></td>
</td><td width="10%">Vendor</td><td width="40%"><select id="vendor1" name="vendor[1]">
<option value="Regent Seven Seas Cruises"'.test().'>Regent</option>
<option value="Silversea Cruises">Silversea</option>
<option value="Oceania Cruises">Oceania</option>
<option value="Windstar Cruises">Windstar</option>
<option value="Paul Gauguin Cruises">Paul Gaugin</option>
<option value="all"> - No Preference - </option>
</select></td>
<td><input name="qdid" type="hidden" value="'.$row['qdid'].'" />
<input name="submit" id="submit" type="submit" class="go" value="Update Quote Setting" />
</tr></form><table>';
}
function test(){
$vensel = $row['vendor'];
if($vensel = "Regent Seven Seas Cruises" ){ echo "selected" }
}//etc for each option
?>
答案 0 :(得分:2)
你的代码可以使用一些重新设计,但是这里有一个建议:开始你的巡航线阵列,迭代那个数组输出标签,并让你的逻辑来确定在那里选择哪个。
$array = array('Regent Seven Seas Cruises', 'Silversea Cruises', 'etc');
foreach ($array as $cruise) {
echo "<option value=\"$cruise\"";
if ($row[vendor] == $cruise) echo ' selected="selected"';
echo ">$cruise</option>";
}
答案 1 :(得分:1)
你非常接近。尝试像这样调用test
:
'<option value="Regent Seven Seas Cruises"'.test($row['vendor'],"Name of Cruise").'>Regent</option>'
然后像这样实施test
:
function test($vensel,$cruisename){
if($vensel == $cruisename){
return "selected";
}
else
{
return "";
}
}
还有其他方法可以做到这一点,但这种方式需要对当前代码进行最少的更改。您的代码存在的问题是变量有scope,除非您将它们作为参数传递,否则无法在创建它们之外访问它们。
编辑:
这是另一种方法。只需将下面的内容直接放在代码中,而不是放在方法中。如果您需要将其放在方法中,请将$row['vendor']
作为参数传递。
$values = array('Regent Seven Seas Cruises','Silversea Cruises','Oceania Cruises','Windstar Cruises','Paul Gauguin Cruises','all');
$texts = array('Regent Seven Seas','Silversea','Oceania','Windstar','Paul Gauguin ',' - No Preference - ');
$len=min(count($values),count($texts));
for($i=0;$i<$len;$i++)
{
echo '<option value="' . $values[$i] . '"';
if($cruise == $row['vendor'])
{
echo ' selected';
}
echo '>';
echo $texts[$i];
echo '</option>';
}