2012-05-30 13 views
6

मैं एक HTML <select> को PHP और PHP डेटा ऑब्जेक्ट्स (पीडीओ) का उपयोग कर एक MySQL डेटाबेस में ENUM फ़ील्ड के विकल्पों के साथ पॉप्युलेट करना चाहता हूं। मैं यह कैसे कर सकता हूँ?ENUM मानों के साथ <select> कैसे पॉप्युलेट करें?

उत्तर

7

वेनिला पीएचपी कार्यान्वयन:

<select> 
<? 
    $result = mysql_query('SHOW COLUMNS FROM '.$table_name.' WHERE field="'.$column_name.'"'); 
    while ($row = mysql_fetch_row($result)) { 
      foreach(explode("','",substr($row[1],6,-2)) as $option) { 
       print("<option>$option</option>"); 
      } 
     } 
?> 
<select> 

पीएचपी डाटा ऑब्जेक्ट्स कार्यान्वयन

<select> 
<? 
    $sql = 'SHOW COLUMNS FROM '.$table_name.' WHERE field="'.$column_name.'"'; 
    $row = $db->query($sql)->fetch(PDO::FETCH_ASSOC); 
    foreach(explode("','",substr($row['Type'],6,-2)) as $option) { 
      print("<option>$option</option>"); 
     } 
?> 
</select> 
+0

यह पूरी तरह से ही सवाल का जवाब करने के लिए स्वीकार्य है: http: //meta.stackexchange.com/questions/12513/should-i-not-answer-my-own-questions – WojtekT

+2

@kotekzot: मैं ठीक किया मानी। :) – eggyal

4

यहाँ एक और समाधान आप एक सरणी के रूप में उपयोग करने के लिए में जब भी आप enum मान प्राप्त करना चाहते हैं एक सहायक समारोह के रूप में उपयोग कर सकते हैं जरूरत है।

public static function getSQLEnumArray($table, $field, $db){ 
    $row = $db->query("SHOW COLUMNS FROM ".$table." LIKE ".$field)->fetch(PDO::FETCH_ASSOC); 
    preg_match_all("/'(.*?)'/", $row['Type'], $categories); 
    $fields = $categories[1]; 
    return $fields; 
} 
+0

ग्रेट फ़ंक्शन! लेकिन मुझे $ फ़ील्ड के आसपास उद्धरण चाहिए: $ पंक्ति = $ डीबी-> क्वेरी ("कॉलम से दिखाएं"। $ तालिका। "पसंद करें"। $ फ़ील्ड। "') -> fetch (PDO :: FETCH_ASSOC); –

संबंधित मुद्दे