根据两个查询将选项元素设置为选中


Set option element as selected based on two queries

我试图弄清楚如何通过检查它的值来标记下拉选项,但该值来自另一个查询。

我从名为$quickedit的查询中获得$FK_TopicID。下拉列表是由另一个名为$topresult的查询生成的。我有一个IF/ELSE语句,当$FK_TopicID等于$row['TopicID']时,应该在<option value="the Topic ID" SELECTED>选项中打印SELECTED

我只是不知道如何检查while循环中的$FK_TopicID$topresult。什么好主意吗?

    <?php
       $NewsID = $_GET["n"];
       $quickedit = mysql_query("SELECT * FROM News LEFT JOIN Topics on Topics.TopicID = News.FK_TopicID WHERE NewsID = $NewsID ORDER BY TopicName ASC, NewsTitle");
       $row = mysql_fetch_array($quickedit);
    echo "<p>" . $FK_TopicID . "</p>";
    /* additional php... */
    $topresult = mysql_query("SELECT * FROM Topics WHERE FK_UserID=$_SESSION[user_id] ORDER BY TopicSort, TopicName");
    while($row = mysql_fetch_array($topresult)) {
                if ( $row['TopicID'] == $FK_TopicID){ /* $FK_TopicID not printing value here */
                   $selected = " SELECTED";
                } else {
                   $selected = "";
                }
                echo '<option value='"' . $row['TopicID'] . '" ' . $selected . '>' . $row['TopicName'] . '</option>';
        }
    ?>

我对数据库的结构一无所知,但我将尝试一下

这个输出是你想要的吗?

<?php
$NewsID = $_GET['n'];
$quickedit = mysql_query("SELECT * FROM News LEFT JOIN Topics on Topics.TopicID = News.FK_TopicID WHERE NewsID = $NewsID ORDER BY TopicName ASC, NewsTitle");
$topresult = mysql_query("SELECT * FROM Topics WHERE FK_UserID=$_SESSION[user_id] ORDER BY TopicSort, TopicName");
echo "<p>" . $FK_TopicID . "</p>";
while($row = mysql_fetch_array($quickedit)) {
    while($row2 = mysql_fetch_array($topresult)) {
        if ( $row2['TopicID'] == $row['FK_TopicID']){
           $selected = " SELECTED";
        } else {
           $selected = "";
        }
        echo '<option value='"' . $row2['TopicID'] . '" ' . $selected . '>' . $row['TopicName'] . '</option>';
    }
}
?>

这段代码循环遍历两个查询,如果$topresult中的TopicID等于$quickedit中的FK_TopicID,它将被选中。