不要在我的下拉框中显示重复的值

时间:2012-02-26 00:21:43

标签: php javascript jquery html forms

我的逻辑需要一些帮助。我在选择框中填充数据库中的值。

如果存在,我回显值,否则我显示默认选项。

现在,例如,如果数据库中的值是新泽西州,我不想在我的下拉框中第二次显示新泽西。我怎么做?

    <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>

4 个答案:

答案 0 :(得分:1)

在每个选项字段中创建一个if语句,并检查数据库中的值是否与选项字段的值匹配,如果是,则echo "selected=\"true\""到选项字段。

有关代码示例,请参阅此问题的答案: retieve data from mysql and display in form

答案 1 :(得分: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>';
?>

答案 2 :(得分:0)

我会稍微更改您的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'));

答案 3 :(得分: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>