iT邦幫忙

0

php修改select、checkbox表單的值

在設計使用者資訊提交頁面時,會用到這樣的下拉表單來選擇,表單通過post提交寫入到資料庫,這些都沒問題。但是如果要修改資料時,怎麼樣才能實現打開修改頁面表單選中的就是上次使用者提交的數據呢?還有checkbox表單的值,如何控制其選中的值為上次使用者提交的值呢?
https://ithelp.ithome.com.tw/upload/images/20201221/20132806Ilw2DPS3gw.png

你不是寫出來了嗎 ? if ($type == 1) echo "selected";
$type 就是你的數據啊
p.s. 保險起見,value前面,請空一格。
checkbox也一樣,if (你的數據 == checkbox上面的值) echo "checked";
請問checkbox是這樣寫嗎?應該怎麼改呢?
<label for="input-I" style="vertical-align: top;">是否是內部單位:</label>
<input type='checkbox' id="ud" name="ud" value="Y" <?php if ($_POST['ud']) echo "checked"; ?>>
已經修改完成了,謝謝大家!

2 個回答

2
㊣浩瀚星空㊣
iT邦超人 1 級 ‧ 2020-12-21 13:23:23
最佳解答

正常來說,你一般在編輯時,一定都會帶你要編輯的資料進來才對。

這邊因為你的程式碼是用圖片的。我就懶的打字了。只做說明。

正常來說。我有發現你有用了key值變數化。
實際情況我並不太清楚。畢竟看不到你資料帶進來的情況為何。
但就你目前的寫法就可以算是ok的。除非是你帶錯參數了。

不過這邊會建議你單純一行時。不要直接用if。
最好還是用三元判斷式的寫法

<select>
	<option <?php ehco $type == 1 ? 'selected' : ''; ?> value="1">AAAA</option>
    <option <?php ehco $type == 2 ? 'selected' : ''; ?> value="1">BBBB</option>
</select>

有時候選項值比較多的話。我會比較喜歡另外帶值回圈處理

<?php
    $select[0]="";
    $select[1]="AAA";
    $select[2]="BBB";
    $select[3]="CCC";
    $select[4]="DDD";
    $select[5]="EEE";
?>
<select>
    <?php foreach($select AS $value => $str):?>
        <option <?php ehco $type == $value ? 'selected' : ''; ?> value="<?php echo $value;?>"><?php echo $str;?></option>
    <?php endforeach;?>    
</select>
柯柯 iT邦新手 5 級 ‧ 2020-12-22 10:29:06 檢舉
<select>
<?
foreach($select as $key => $value){
    if($_POST['type'] == $value){
        echo "<option selected value='$value'>$key</option>";
    }else{
        echo "<option value='$value'>$key</option>";
    }
}
?>
</select>

我是這樣寫

柯柯
那你要開始養成習慣。不要再用短用法了。
然後學view式用法了。
對程式語法判讀來說會很有幫助。
如果有美工的話,美工也會很感謝你用view式用法了。

不過其實認真來說,這是很早期view與php混用的做法。
現在都已經不會在我這邊看到這樣的用法了。

1
耿直小伙
iT邦新手 3 級 ‧ 2020-12-21 11:50:34

如果這些資料並非存入資料庫的暫存資料,那你需要使用 cookie 或 session 來暫時保存使用者選取的值,然後在輸出到 html 進行 selected 判斷

<?php
$type = (isset($_SESSION['type'])) ? $_SESSION['type'] : null;
?>
<select>
	<option <?php echo ($type === 1) ? ' selected' : ''; ?> value="1">直客</option>
</select>

盡量不要直接教

<?=

這樣的短用法。現在新版的預設值已經不支援這樣的短用法了。
雖然還是可以靠調整ini將其打開。

不好意思,已修正

我要發表回答

立即登入回答