使用从 SQL 中获取的默认值优化下拉列表?
Optimize dropdown with default value grabbed from SQL?
我有一个省份下拉列表,默认值是根据从 SQL:
抓取的用户省份确定的
$getProvince = $db->prepare("
SELECT province
FROM users
WHERE userid = :id
");
$getProvince->execute(array(
':id' => $_SESSION["userident"]
));
$province = $getProvince->fetchColumn();
<select name="addprov">
<option value="AB" <?php if ($province == "AB") { echo "selected='selected'"; } ?>>Alberta</option>
<option value="BC" <?php if ($province == "BC") { echo "selected='selected'"; } ?>>British Columbia</option>
<option value="MB" <?php if ($province == "MB") { echo "selected='selected'"; } ?>>Manitoba</option>
<option value="NB" <?php if ($province == "NB") { echo "selected='selected'"; } ?>>New Brunswick</option>
<option value="NFLD" <?php if ($province == "NFLD") { echo "selected='selected'"; } ?>>Newfoundland & Labrador</option>
<option value="NS" <?php if ($province == "NS") { echo "selected='selected'"; } ?>>Nova Scotia</option>
<option value="ON" <?php if ($province == "ON") { echo "selected='selected'"; } ?>>Ontario</option>
<option value="PEI" <?php if ($province == "PEI") { echo "selected='selected'"; } ?>>Prince Edward Island</option>
<option value="QC" <?php if ($province == "QC") { echo "selected='selected'"; } ?>>Quebec</option>
<option value="SK" <?php if ($province == "SK") { echo "selected='selected'"; } ?>>Saskatchewan</option>
</select>
你可以看到这有多丑陋。有什么方法可以优化它,让它看起来不那么难看吗?
将你的选项放在一个数组中,然后循环 html 输出。
$provinces = array(
'AB' => 'Alberta',
'BC' => 'British Columbia',
'MB' => 'Manitoba',
//...
);
$province = ''; // your query result
然后对于输出...
<select name="addprov">
<?php foreach ($provinces as $key => $value): ?>
<option value="<?php echo $key; ?>" <?php if ($province === $key): ?>selected="selected"<?php endif; ?>><?php echo $value; ?></option>
<?php endforeach; ?>
</select>
我有一个省份下拉列表,默认值是根据从 SQL:
抓取的用户省份确定的$getProvince = $db->prepare("
SELECT province
FROM users
WHERE userid = :id
");
$getProvince->execute(array(
':id' => $_SESSION["userident"]
));
$province = $getProvince->fetchColumn();
<select name="addprov">
<option value="AB" <?php if ($province == "AB") { echo "selected='selected'"; } ?>>Alberta</option>
<option value="BC" <?php if ($province == "BC") { echo "selected='selected'"; } ?>>British Columbia</option>
<option value="MB" <?php if ($province == "MB") { echo "selected='selected'"; } ?>>Manitoba</option>
<option value="NB" <?php if ($province == "NB") { echo "selected='selected'"; } ?>>New Brunswick</option>
<option value="NFLD" <?php if ($province == "NFLD") { echo "selected='selected'"; } ?>>Newfoundland & Labrador</option>
<option value="NS" <?php if ($province == "NS") { echo "selected='selected'"; } ?>>Nova Scotia</option>
<option value="ON" <?php if ($province == "ON") { echo "selected='selected'"; } ?>>Ontario</option>
<option value="PEI" <?php if ($province == "PEI") { echo "selected='selected'"; } ?>>Prince Edward Island</option>
<option value="QC" <?php if ($province == "QC") { echo "selected='selected'"; } ?>>Quebec</option>
<option value="SK" <?php if ($province == "SK") { echo "selected='selected'"; } ?>>Saskatchewan</option>
</select>
你可以看到这有多丑陋。有什么方法可以优化它,让它看起来不那么难看吗?
将你的选项放在一个数组中,然后循环 html 输出。
$provinces = array(
'AB' => 'Alberta',
'BC' => 'British Columbia',
'MB' => 'Manitoba',
//...
);
$province = ''; // your query result
然后对于输出...
<select name="addprov">
<?php foreach ($provinces as $key => $value): ?>
<option value="<?php echo $key; ?>" <?php if ($province === $key): ?>selected="selected"<?php endif; ?>><?php echo $value; ?></option>
<?php endforeach; ?>
</select>