我的逻辑需要一些帮助。我在选择框中填充数据库中的值。
如果存在,我回显值,否则我显示默认选项。
现在,例如,如果数据库中的值是新泽西州,我不想在我的下拉框中第二次显示新泽西。我怎么做?
<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 :(得分: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>