预选选项匹配db值而不添加新的Select选项

时间:2013-02-12 03:33:54

标签: php select selected

我正在创建一个客户帐户页面,该页面在数据库中显示相关信息,并允许客户编辑他们的信息。

以下代码从数据库中检索并显示客户的帐户信息,并预先选择与其信息匹配的值。我的问题特定于Select元素 - 而不是从现有的选择选项中进行选择,而是在数据库中添加一个带有值的额外选择选项,以便数据库中的值显示两次。

编辑 - 例如,如果'gift_privacy'的db值为'Standard',则Select选项显示为:* Standard,Standard,Gift ID Req,Not_Enrolled *而不是*标准,礼品ID需求,Not_Enrolled *

如何更正此代码,以便将selected="selected"应用于现有选项?

<?php   
try {  
$stmt = $conn->prepare("SELECT * FROM customer_info WHERE user_id = :user_id");  
$stmt->bindValue(':user_id', $user_id); 
$stmt->execute();
}catch(PDOException $e) {echo $e->getMessage();}
$row = $stmt->fetch();
$search = array('_', ',');
$replace = array(' ', ', ');
$rows = str_replace($search, $replace, $row);
?>
<select name="gift_privacy">
<option selected="selected" value="<?php echo $rows['gift_privacy']; ?>"><?php echo $rows['gift_privacy']; ?></option>
<option value="Standard">Standard</option>
<option value="Gift_ID_Req">Require program ID</option>
<option value="Not_Enrolled">Do not enroll</option>
</select>

2 个答案:

答案 0 :(得分:1)

尝试:

<?php
$gifts = array(
    "Standard" => "Standard",
    "Gift_ID_Req" => "Require Program ID",
    "Not_Enrolled" => "Do not Enroll");

$gift = $rows['gift_privacy'];
//$gift = "Gift_ID_Req";
foreach($gifts as $key => $value) {
    if($key == $gift) {
        echo '<option selected="selected" value="'. $key .'">'. $value .'</option>';
    } else {
        echo '<option value="'. $key .'">'. $value .'</option>';
    }
}
?>

而不是:

<option selected="selected" value="<?php echo $rows['gift_privacy']; ?>"><?php echo $rows['gift_privacy']; ?></option>
<option value="Standard">Standard</option>
<option value="Gift_ID_Req">Require program ID</option>
<option value="Not_Enrolled">Do not enroll</option>

当然,有多种方法可以对猫进行换肤,您可以检查$rows['gift_privacy']是否与每行的当前选项相匹配。

答案 1 :(得分:1)

试试这个。这是解决您问题的简单方法。

<select name="gift_privacy">
<option value="Standard" <?php if($rows['gift_privacy']=='Standard') echo "selected='selected'"; ?>>Standard</option>
<option value="Gift_ID_Req" <?php if($rows['gift_privacy']=='Gift_ID_Req') echo "selected='selected'"; ?>>Standard</option>
<option value="Not_Enrolled" <?php if($rows['gift_privacy']=='Not_Enrolled') echo "selected='selected'"; ?>>Standard</option>
</select>
相关问题