2012-02-26 49 views
0

我需要一些幫助,在這裏我的邏輯。我在我的選擇框中填充數據庫中的值。在我的下拉框中不顯示重複值

如果存在,我回顯值,否則我顯示默認選項。

現在,例如,如果數據庫的值是新澤西州,我不想在我的下拉框中第二次顯示新澤西州。我怎麼做?

<select name="location" class="field" > 

       <option value="<?php if(!empty($get_location)){ echo $get_location; } ?>"><?php if(!empty($get_location)){ echo $get_location; }?></option> 

       <option value="New Jersey">New Jersey</option> 

       <option value="New York">New York</option> 

       <option value="California">California</option> 
      </select> 
+0

New Jersey,New York and California are defaults? – elclanrs 2012-02-26 00:24:38

+0

也請看看使用模板引擎(我習慣了http://www.smarty.net/,但還有很多其他的([wikipedia](http://en.wikipedia.org/wiki/Template_engine_( web)#Comparison))),這將緩解開發PHP網頁的生活 – 2012-02-26 01:50:57

回答

1

你讓一個if語句中的每個選項字段,並檢查數據庫中的值選項字段的值相匹配,如果這樣做,你echo "selected=\"true\""的選項字段。

有關代碼示例見我的回答這個問題: retieve data from mysql and display in form

+0

感謝您的幫助......我認爲Marc的答案是我期待的快速解決方案! – newbie 2012-02-26 01:14:45

0

如果想顯示你的數據庫值:

<?php 
    // You populate an array with the locations from your database 
    // As an example: 
    $options = array(1=>'New Jersey',2=>'Los Angeles'); 

    $html = '<select name="locations">'; 
    foreach($options as $id => $option) 
    { 
     $html .= '<option id="'.$id.'">'.$option.'</option>'; 
    } 
    echo $html.'</select>'; 
?> 

如果你想一些特別的東西發生在你的數據庫值,但仍然加載默認值:

<?php 
    // You populate an array with the locations from your database 
    // As an example: 
    $options = array(1=>'New Jersey',2=>'Los Angeles'); 

    // Compare against your full list of locations 
    // As an example: 
    $locations = array(1=>'New Jersey',2=>'Los Angeles',3=>'California',4=>'London'); 

    $html = '<select name="locations">'; 
    foreach($options as $id => $option) 
    { 
     if(array_key_exists($id,$locations)) 
     { 
     // Enter your magic 
     } 
    } 
    echo $html.'</select>'; 
?> 
0

我會c稍微增加你的php代碼以添加默認值,然後你可以使用jQuery過濾和刪除重複項。如果有很多的選擇,這可能不是最好的解決辦法壽...

PHP

<select name="location" class="field"> 
    <?php if(!empty($get_location)): ?> 
     <option value="<?php echo $get_location; ?>"> 
      <?php echo $get_location; ?> 
     </option> 
    <?php else: ?> 
     // Defaults 
    <?php endif; ?> 
</select> 

jQuery的

var removeDup = function($select){ 
    var val = ''; 
    $select.find('option').each(function(){ 
     if ($(this).val() === val) { $(this).remove(); } 
     val = $(this).text(); 
    }); 
}; 
removeDup($('#yourSelect')); 
0

在一個請求到數據庫中獲取你的位置,將它們與默認值一起添加到數組中,如果只有一個位置如下所示,如果多個位置將它們解析爲數組並將它們與默認值合併,則執行array_unique以獲取擺脫重複並在循環中輸出數組。

<select name="location" class="field"> 
    <?php 
     $output = array(1=>'New Jersey', 2=>'New York', 3=>'California', 4=>$get_location); 
     $options = array_unique($output); 

     foreach($options as $key => $value) { 
      echo '<option value="'.$value.'">'.$value.'</option>'; 
     } 
    ?> 
</select>