我有一个从MySQL数据库中的表填充的下拉菜单。它的功能,但我想在代码中添加一个if / else语句,以根据条件更改下拉列表的默认值。 以下是下拉列表的代码(非常感谢AlienWebguy帮助他们实现这一目标):
<?php
$sql="SELECT techID, tech_userlogin FROM technicians";
$result=mysql_query($sql);
while ($row=mysql_fetch_array($result))
{
$techID = $row['techID'];
$tech_userlogin=$row['tech_userlogin'];
// Here - check if the $_GET value in the query matches the tech_userlogin
($selected = ($tech_userlogin == $_GET['wtech_userlogin']) ? 'selected="selected"' : '');
echo '<option value="' . $tech_userlogin . '" ' . $selected . '>' . $tech_userlogin . '</option>' . "\n";
}
?>
我已经尝试了几件事来完成我所追求的目标,但是由于缺乏PHP / MySQL的经验和/或专业知识,我受到了严重的阻碍。
这是我第一次尝试这些东西,到目前为止一直受到欢迎。我已经收到了Stack Overflow的帮助,我很感激这样的资源存在。
这是我最近的努力,它无法实现我所追求的目标。如果在if语句中不满足条件,我希望下拉列表的默认值为“--Select Technician--”。
<?php
$sql="SELECT techID, tech_userlogin FROM technicians";
$result=mysql_query($sql);
$options="";
while ($row=mysql_fetch_array($result))
{
$techID = $row['techID'];
$tech=$row['tech_userlogin'];
$options.="<option value=\"$tech\">$tech</option>";
// Here - check if the $_GET value in the query matches the tech_userlogin
if
($selected = ($tech == $_GET['wtech_userlogin']) ? 'selected="selected"' : '')
{echo '<option value="' . $tech . '" ' . $selected . '>' . $tech . '</option>' . "\n";}
else
{echo '<option value="' . $options . '" . 'selected="selected"'>'--Select Tech--'<. $options .>' . "\n";}
}
?>
有人可以帮助我或指出正确的方向吗?非常感谢。
干杯
答案 0 :(得分:1)
试试这个
<select name="whatever">
<option value="">-- Select Technician --</option>
<?php while ($row = mysql_fetch_array($result)) :
$techId = $row['techID']; // why isn't this used?
$tech = htmlspecialchars($row['tech_userlogin']);
$selected = $row['tech_userlogin'] == $_GET['wtech_userlogin'] ? '" selected="selected' : '';
?>
<option value="<?php echo $tech, $selected ?>"><?php echo $tech ?></option>
<?php endwhile ?>
</select>
答案 1 :(得分:0)
如果整个if / then只是在那里创建一个默认值,那么你就太复杂了。
$options = '<option value="">--Select Tech--</option>';
while ($row=mysql_fetch_array($result))
{
$techID = $row['techID'];
$tech = $row['tech_userlogin'];
$selected = ($tech == $_GET['wtech_userlogin']) ? 'selected="selected"' : '';
$options .= '<option value="' . $techID . '" ' . $selected . '>' . $tech . '</option>' . "\n";
}
现在$options
包含了您的所有选项,包括首先显示的默认选项( - 选择Tech--,具有空值),因此如果没有其他选项,则会开始选中{ {1}}属性。
请注意,您的选项值也有selected
,但我认为您打算说$tech
。
答案 2 :(得分:-1)
你写了这个,这不是你想要的:
($selected = ($tech == $_GET['wtech_userlogin']) ? 'selected="selected"' : '')
更改为:
($selected = ($tech == $_GET['wtech_userlogin']) ? 'selected="selected"' : false)
注意'假'。你需要它,因为空引号不是假的,它被PHP认为是'true'。
答案 3 :(得分:-1)
我可能是错的,但我相信问题在于你的if语句。你有:
($selected = ($tech == $_GET['wtech_userlogin']) ? 'selected="selected"' : '')
问题是你要将三元语句的结果赋给变量$ selected,对于成功的赋值,它总是返回true。