在開發編輯頁面時,需根據資料庫數據讓下拉選單、單選框、複選框自動呈現預設值。本文提供可直接套用的 PHP 實現範例。
在 <option> 標籤中動態輸出 selected 屬性:
<select name="wuyeleixing">
<option value="1" <?php if ($myrow['wuyeleixing'] == 1) echo 'selected'; ?>>住宅</option>
<option value="2" <?php if ($myrow['wuyeleixing'] == 2) echo 'selected'; ?>>辦公室</option>
<option value="3" <?php if ($myrow['wuyeleixing'] == 3) echo 'selected'; ?>>營業房</option>
<option value="4" <?php if ($myrow['wuyeleixing'] == 4) echo 'selected'; ?>>廠房</option>
<option value="5" <?php if ($myrow['wuyeleixing'] == 5) echo 'selected'; ?>>倉庫</option>
<option value="6" <?php if ($myrow['wuyeleixing'] == 6) echo 'selected'; ?>>地塊</option>
<option value="7" <?php if ($myrow['wuyeleixing'] == 7) echo 'selected'; ?>>綜合樓</option>
<option value="8" <?php if ($myrow['wuyeleixing'] == 8) echo 'selected'; ?>>農牧場</option>
<option value="9" <?php if ($myrow['wuyeleixing'] == 9) echo 'selected'; ?>>商住樓</option>
<option value="10" <?php if ($myrow['wuyeleixing'] == 10) echo 'selected'; ?>>賓館酒樓</option>
<option value="11" <?php if ($myrow['wuyeleixing'] == 11) echo 'selected'; ?>>校舍</option>
</select>
優化建議:使用三元運算子簡化輸出 <?= $myrow['wuyeleixing']==1 ? 'selected' : '' ?>,並確保陣列鍵名加引號($myrow['wuyeleixing'])避免常量未定義警告。
同名 name 的單選組,僅值匹配項輸出 checked:
<input type="radio" name="dishu" value="3" <?php if ($myrow['dishu'] == 3) echo 'checked'; ?>> 空白
<input type="radio" name="dishu" value="1" <?php if ($myrow['dishu'] == 1) echo 'checked'; ?>> 出讓
<input type="radio" name="dishu" value="2" <?php if ($myrow['dishu'] == 2) echo 'checked'; ?>> 劃撥
<input type="radio" name="dishu" value="4" <?php if ($myrow['dishu'] == 4) echo 'checked'; ?>> 集體
複選框通常對應布林或集合值,判斷邏輯為「值非空/真」即輸出 checked:
<input name="fujia_jiaju" type="checkbox" value="jiaju" <?php if ($myrow['fujia_jiaju']) echo 'checked'; ?>> 家具
<input name="fujia_chuju" type="checkbox" value="chuju" <?php if ($myrow['fujia_chuju']) echo 'checked'; ?>> 廚具
<input name="fujia_woju" type="checkbox" value="woju" <?php if ($myrow['fujia_woju']) echo 'checked'; ?>> 臥具
<input name="fujia_TV" type="checkbox" value="TV" <?php if ($myrow['fujia_TV']) echo 'checked'; ?>> 電視機
注意:若資料庫存儲為逗號分隔字符串(如 "jiaju,chuju"),需先轉為陣列 in_array('jiaju', explode(',', $myrow['fujia'])) 判斷。
為提升可維護性,建議封裝輔助函數:
function selected($value, $target, $echo = true) {
$attr = $value == $target ? 'selected' : '';
return $echo ? $attr : ($attr ? ' selected' : '');
}
function checked($value, $target, $echo = true) {
$attr = $value == $target ? 'checked' : '';
return $echo ? $attr : ($attr ? ' checked' : '');
}
模板中即可簡潔調用:<option value="1" <?= selected($myrow['wuyeleixing'], 1) ?>>