PHP if / else语句不会产生所需的结果

时间:2011-10-20 01:08:05

标签: php mysql

我有一个从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";}
    }
?>

有人可以帮助我或指出正确的方向吗?非常感谢。

干杯

4 个答案:

答案 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。