2011-05-12 67 views
0

为了给出一些上下文,下面的下拉列表在一个表格中,该表格给出了存储在数据库中的动物的当前配置描述:即,这个小马是高的,这个性别,由somesuch拥有等等。表单的目的是编辑这些当前值。有各种可以自由夸大的选项,其他的我可以选择的选项仅限于下拉菜单中的选项。运行一个MySQL查询,存储一个临时值,然后运行另一个查询

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

有两个表引用 - 配置文件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> 

任何帮助将不胜感激。我并不是那么有经验(显然!),所以伴随的解释会非常棒。

回答

0

可以“按订单的价值就合并成一个单一的查询,使用一个计算:

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

order by子句将评估为真(你在应该是第一的记录)或者假(任何其他记录),它被加入到可以排序的值1/0中,并且通过按降序执行,真值(1)首先出现。

+0

多数民众赞成在辉煌!我不知道ORDER BY子句是这样工作的。非常便利。谢谢你 - 试了一下,并努力:) – Eamonn 2011-05-12 17:10:50

+0

正如旁注 - 是否可以对剩余的值进行排序(例如按字母顺序排列)? – Eamonn 2011-05-12 17:15:19

+0

您可以通过多个字段以不同的asc/desc命令进行订购:'按X asc,Y desc,Z asc'等排序...... – 2011-05-12 17:24:07

相关问题