我正在創建一個客戶賬戶頁面,該頁面在數據庫中顯示相關信息並允許客戶編輯其信息。下面的代碼從數據庫中檢索並顯示客戶的帳戶信息,並預先選擇與其信息匹配的值,但由於有幾百個select和/或multiselect元素,我想創建一個函數來檢查db值(即$rows['gift_privacy']
)與當前選項相符。檢查分貝值是否與當前選擇選項相匹配的函數
<?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();
?>
<form action="account_information-exec.php" method="post">
<select name="gift_privacy">
<option value="Standard" <?php if($row['gift_privacy']=='Standard') echo "selected='selected'"; ?>>Standard</option>
<option value="Gift_ID_Req" <?php if($row['gift_privacy']=='Gift_ID_Req') echo "selected='selected'"; ?>>Require program ID</option>
<option value="Not_Enrolled" <?php if($row['gift_privacy']=='Not_Enrolled') echo "selected='selected'"; ?>>Do not enroll</option>
</select>
<input type="submit" value="submit">
</form>
編輯 -該代碼用於多選元件略有不同。元素名稱後面跟着方括號(即name="notifications[]"
),並將值作爲內插陣列implode(',', $_POST['notifications'])
插入到數據庫中。這些逗號,然後從讀取值,以便正確比較它們的選項的值$row1 = str_replace(',', '', $row);
現有功能
此功能適用selected="selected"
到正確的選項,但它是太麻煩爲我有這麼使用剝離很多元素,我不知道如何修改代碼,以便它可以很容易地應用到所有選擇和/或多選元素。此外,由於該頁面當前使用具有硬編碼選項的標準選擇元素,我希望有一個解決方案不需要爲每個元素創建數組。
<select name="gift_privacy">
<?php
$gifts = array("Standard" => "Standard", "Gift_ID_Req" => "Require Program ID", "Not_Enrolled" => "Do not Enroll");
$gift = $row['gift_privacy'];
foreach($gifts as $key => $value) {
if($key == $gift) {
echo '<option selected="selected" value="'. $key .'">'. $value .'</option>';
} else {
echo '<option value="'. $key .'">'. $value .'</option>';
}
}
?>
</select>
這是一個問題或答案:P? – AmazingDreams 2013-02-13 07:53:16
@AmazingDreams - 我認爲這是對希望得到充分研究的問題的讚揚; -D – 2013-02-13 08:31:42
您是否將數據庫中的所有「選擇」選項都放在了某處或類似位置?如果沒有,我會建議它有很多選項,然後讓你的數組從數據庫中拉出來進行檢查。這將簡化您的整個項目,特別是如果選擇選項在多個頁面上。 ^^ – Jon 2013-02-13 08:46:01