2013-02-12 35 views
0

我正在创建一个客户账户页面,该页面在数据库中显示相关信息并允许客户编辑其信息。预先选择匹配分贝值的选项,但不添加新的选择选项

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

编辑 -例如,如果“gift_privacy”的分贝值是“标准”,选择选项被显示为:*标准,标准,礼品ID Req时,Not_Enrolled的*代替*标准,礼品ID Req,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> 
+0

我不知道我明白...它是如何显示两次?你显示的代码的输出是什么? – Jon 2013-02-12 04:00:46

+0

@Jon - 如果显示的代码的数据库值为'标准',则选择选项显示为:'Standard,Standard,Gift ID Req,Not_Enrolled',而不是'Standard,Gift ID Req,Not_Enrolled' – 2013-02-12 04:11:23

回答

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']当前选项相匹配在每一行代替。

+0

我插入您在''之间建议的代码,但这会导致它始终显示第一个选项('Standard')而不是任何db值。 – 2013-02-12 05:08:15

+0

而不是'$ gift = $ rows ['gift_privacy'];'使用'$ gift = $ row ['gift_privacy'];',我们希望它未经编辑。 – Jon 2013-02-12 05:13:14

+0

工作原理:-D出于好奇,有没有另外一种方法(比如你的建议是检查$ rows ['gift_privacy']是否与当前选项相匹配),这将更容易实现(因为有几百个select元素) ? – 2013-02-12 05:13:30

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>