首页 文章

使用PHP预选MySQL填充的下拉列表

提问于
浏览
0

我有一个表单,它将填充mysql表中的数据:

$db = mysql_connect("localhost:3306", "user", "pass");
        mysql_select_db("db",$db);
        $sql = "Select * from wp_awa_upload where uid = '$_SESSION[id]' and project = '$_SESSION[project]'";
        //echo $sql;
        $ergebnis = mysql_query($sql); 
        $row = mysql_fetch_object($ergebnis);

        $category = $row->cat;

变量$ category包含用户先前输入的类别的名称 .

在这种形式我有一个下拉列表,将填充来自mysql表的数据:

<? $db = mysql_connect("localhost:3306", "user", "pass");
mysql_select_db("db",$db); mysql_query("SET CHARACTER SET 'utf8'"); $sql = "SELECT cat FROM subcategory order by cat asc";
$result = mysql_query($sql);

echo "<select name='parent_cat'>";
while ($row = mysql_fetch_array($result)) {
echo "<option value='" . $row['cat'] . "'>" . $row['cat'] . "</option>";
}
echo "</select>"; ?>

下拉列表包含所有可选类别 . 我现在想要实现的是在Dropdown中突出显示(或设置为1位置)$ category .

就像是

if ($row['cat'] == $category) { 

echo '<option value="'.$row['cat'] .'" selected="selected">'.$row['cat'] .'</option>'; } else {

echo '<option value="'.$value.'" selected="selected">'.$value.'</option>';

} 

echo "</select>"; ?>

我怎样才能做到这一点?

感谢您的支持!

亲切的问候,

斯特凡

1 回答

  • 0

    您可以使用三元运算符实现此目的:

    <option value="<?= $row['cat']; ?>" <?= $row['cat'] == $category ? 'selected' : ''; ?>>
    

    三元运算符检查true或false . '?'之后的第一个选项为真,并且':'后的第二个选项为false . 如果您正在迭代的行等于您尝试设置为所选的行,则php将回显“已选择” .

    另外,你注意到我改变了样式 . php中的一个最佳实践是让html成为html和php成为php . 注意我是如何回显值和三元语句而不是回显整个html块 .

    所以下面是你的代码:

    <?php 
    $db = mysql_connect("localhost:3306", "user", "pass");
    mysql_select_db("db",$db); mysql_query("SET CHARACTER SET 'utf8'");
    $sql = "SELECT cat FROM subcategory order by cat asc";
    $result = mysql_query($sql); ?>
    
    <select name='parent_cat'>
     <?php while ($row = mysql_fetch_array($result)) { ?>
     <option value="<?= $row['cat']; ?>" <?= $row['cat'] == $category ? ' selected' : ''; ?>>
       <?= $row['cat']; ?>
     </option>
     <?php } ?>
    </select>
    

    你可以看到从html中识别php更容易,反之亦然 .

相关问题