2011-05-12 65 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

相關問題