2013-02-12 54 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>