2011-08-22 68 views
1

我想創建一個組合框(最終使用jQuery Ajax操作它),該組合框填充了來自數據庫表字段的enum值。使用MySQL數據庫字段枚舉值填充PHP組合框

我的目標是稍後使用這些選項在頁面上過濾mysql_query結果。

我在想這樣做的最好方法是將整個表格和組合框的enum值作爲option標記值。在我缺乏的地方首先知道如何調用enum的值。

如果您對如何做到這一點有更好的建議,請告訴我!

謝謝。


我發現下面的代碼,它似乎做我需要的。但是,它似乎從我的表中抓取所有enum arrays,並將每個數組轉換爲組合框。這不是問題,因爲我希望爲每個單獨的數組創建組合框。不過,我想改變它的順序。有什麼辦法可以編輯這段代碼來控制每一組?或者甚至是否指定了我想要回顯的字段,然後根據需要重複多次?我知道那樣做會意味着更多的代碼,並且效率不高。

的PHP:

$table="images"; 
$describe=mysql_query("describe $table"); 
while ($ligne=mysql_fetch_array($describe)){ 
    extract($ligne); 
    if (substr($Type,0,4)=='enum'){ 
     $liste=substr($Type,5,strlen($Type)); 
     $liste=substr($liste,0,(strlen($liste)-2)); 
     $enums=explode(',',$liste); 
     if (sizeof($enums)>0){ 
      echo "<select name='enum'>\n"; 
      for ($i=0; $i<sizeof($enums);$i++){ 
       $elem=strtr($enums[$i],"'"," "); 
       echo "<option value='".$elem."'>".$elem."</option>\n"; 
      } 
      echo "</select>"; 
     } 
    } 
} 

認爲我應該提一下,包含三個字段enumsimgFamilyimgClassimgGender。我最好喜歡這個順序的組合框。

回答

2

您可以使用:

SELECT column_type FROM information_schema.columns WHERE table_name = :myTable AND column_name = :myColumn 

這將返回是這樣的:

enum('one','two','three') 

,你可以在PHP解析。不過,我認爲在代碼或其他表中維護列表可能比列舉值更好。

+0

非常感謝回覆。我會嘗試一下,但是我碰到了一段可能會工作並且在上面發佈的代碼。這似乎不僅查詢了「enum」值,而且還將結果「回顯」爲組合框。我在上面指出了我的問題。 – stefmikhail