0

为了给出一些上下文,以下下拉列表位于一个表格中,该表格给出了存储在数据库中的动物的当前配置文件描述:即,这匹小马很高,属于这种性别,由 somesuch 拥有,等等。该表格的目的是编辑这些当前值。有各种选项可以自由地被过度使用,其他我希望选择仅限于下拉菜单中的选项。

以下是我用于 Gender 字段的当前代码,尽管它确实有效,但它不是正确的做事方式。我会对查询当前状态,将当前状态作为默认选项,存储当前状态,查询不等于存储的当前状态的其他可用状态,然后将剩余状态作为选项的方法更感兴趣。这是我最能适应表单上所有其他下拉菜单的方法。

引用了两个表 - profile tbl 和 prm_breedgender tbl。每个性别都有一个 ID,然后每个配置文件都有一个相应的 ID 来表示他们的性别(男性 = 1,女性 = 2 等)。$profile 变量表示正在查看的当前配置文件。

<label for="profile-gender">Gender / Type:</label>
    <select name="profile-gender">
        <?php
            $genderresult = mysql_query("SELECT prm_breedgender.BreedGender
                            FROM profiles, prm_breedgender
                            WHERE ProfileID = $profile
                            AND prm_breedgender.BreedGenderID = profiles.ProfileGenderID");
            $row = mysql_fetch_array($genderresult);
            echo '<option value="' . $row['BreedGenderID'] . '">' . $row[BreedGender] . '</option>';

            $exgenderresult = mysql_query("SELECT prm_breedgender.BreedGender
                            FROM profiles, prm_breedgender
                            WHERE ProfileID = $profile
                            AND prm_breedgender.BreedGenderID != profiles.ProfileGenderID");
            while ($row = mysql_fetch_array($exgenderresult)) {
            echo '<option value="' . $row['BreedGenderID'] . '">' . $row[BreedGender] . '</option>';
            }
        ?>
    </select>

任何帮助将不胜感激。我不是所有的经验(显然!)所以随附的解释会很棒。

4

1 回答 1

0

您可以使用计算出的“order by”值将其组合成一个查询:

SELECT ...
FROM ...
WHERE ...
ORDER BY (prm_breedgender.BreedGenderID = profiles.ProfileGenderID) DESC

order by 子句将评估为 true(您在应该是第一个记录的记录)或 false(任何其他记录),它被设置为可以排序的值 1/0,并按降序进行,真值(1)首先出现。

于 2011-05-12T17:03:02.847 回答