如果数据库显示--None--显示下拉菜单,如果输入了其他显示数据

时间:2012-01-09 19:30:22

标签: php mysql drop-down-menu

我使用这个脚本已经走了很长一段路,但我现在遇到了一个新问题。数据已正确发布,但当我尝试查看编辑时,下拉菜单现在显示--None--即使第一个名称“Any Kahl”显示在数据库中。

下面的代码就是我正在使用的代码,我似乎无法理解为什么它没有以正确的方式提取数据。任何帮助将不胜感激。

if ($row['fab1']=="--None--")
{
    echo'<div id="fab1">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab1'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo'<div id="fab1">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab1'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}

2 个答案:

答案 0 :(得分:1)

如果你没有用大括号包装你的代码块,那么if语句将只适用于紧随其后的第一行(在你的情况下:echo'<div id="fab1">'),无论你是否执行,之后的任何内容都将执行陈述评估为真。

你应该用花括号包装你的if语句:

echo '<div id="box4">';
echo '<h2>Fabricators</h2>';
if ($row['fab1']="--None--")
{
    echo'<div id="fab1">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab1'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo '<div id="fab1"><span class="b"></span><input type="text" name="fab1"  size="20" value="' . $row['fab1'] . '" /></div>';
    echo '</div>';
}

答案 1 :(得分:1)

您需要对if和else之间的语句进行封装。

这可以通过几种不同的方式完成。

if (condition) : 
//statements if true
else : 
//all other statements
endif;

if(condition){
//statements if true
}
else {
//all other statements
}

你编写它的方式只读取if作为if语句的一部分之后的第一行。这就是else语句出乎意料的原因。