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

时间:2017-11-14 13:44:20

标签: php mysql drop-down-menu

我有一个表格,它将填充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>"; ?>

我怎样才能做到这一点?

感谢您的支持!

亲切的问候,

的Stefan

1 个答案:

答案 0 :(得分: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要容易得多,反之亦然。