麻辣家族討論版版's Archiver

小誌 發表於 2011-4-19 10:04

5-6-5 核取按鈕(Checkbox)

[color=DarkRed][size=4][b]5-6-5   核取按鈕(Checkbox)[/b][/size][/color]
核取按鈕(Checkbox)適用於多備選案答案且多正確答案選取的場合,如同複選的選擇題,例如興趣、嗜好…等:[code]<input type=”Checkbox” name=”識別名” value=”資料值”>[/code]與單選按鈕相同的是使用者只需點選答案,不需要填寫資料,所以必須為每一個核取按鈕建立不同的資料值,而且為了讓多個核取按鈕成為複選的群組,故同群組內的核取按鈕其「name」屬性值必須為相同的「識別名」。
checkbox.php[code]<html><head>
<title>核取按鈕元件使用</title>
</head><body>
<form action="checkbox_ans.php" method="Post">
請選擇您喜歡的水果:<Br>
<Input type="Checkbox" name="food" value="香蕉" Checked>香蕉
<Input type="Checkbox" name="food" value="蘋果">蘋果
<Input type="Checkbox" name="food" value="芭樂">芭樂
<Input type="Checkbox" name="food" value="鳳梨">鳳梨
<Input type="Checkbox" name="food" value="西瓜">西瓜
<Br>
<input type="Submit">
</form>[/code]若要將某個核取按鈕預設為已選取,則加入「Checked」屬性設定即可。與單選按鈕最大的不同是核取按鈕在選取後,可以再點選一次核取按鈕取消選取。
[attach]5532[/attach]
圖5-27  核取按鈕範例checkbox.php。

小誌 發表於 2011-4-19 10:05

當同時點選多個核取按鈕後,因為每個核取按鈕的名稱都相同,因此,當資料傳送後,每個被點選的核取按鈕其資料值之間會以一個「,」逗號與一個空白字元隔開,我們可以利用「str_replace()」函數加以替換。
[attach]5533[/attach]
圖5-28  核取按鈕範例checkbox_ans.php。
checkbox_ans.php[code]<html><head>
<title>核取按鈕元件使用</title>
</head><body>
<?
$myfood=$_REQUEST["food"];
?>
您的選擇(替代前):<?=$myfood?>
<P>
您的選擇(替代後):<?=str_replace(",",";",$myfood)?>
</body></html>[/code]

小誌 發表於 2011-4-19 10:06

你騙人!我不管選取幾個項目,它就是只會出現最後一個被選取的項目,呵,您的情形是不是像圖5-28一樣ㄚ!這是PHP中的一個陷阱,像核取方塊這種元件,可以一個識別名稱記錄很多資料內容的狀況,我們用一個識別名來處理當然行不通!因此,表單的核取方塊識別名應該要把它改成陣列形式:
checkbox_2.php[code]<html><head>
<title>核取按鈕元件使用</title>
</head><body>
<form action="checkbox_2_ans.php" method="Post">
請選擇您喜歡的水果:<Br>
<Input type="Checkbox" name="food[]" value="香蕉" Checked>香蕉
<Input type="Checkbox" name="food[]" value="蘋果">蘋果
<Input type="Checkbox" name="food[]" value="芭樂">芭樂
<Input type="Checkbox" name="food[]" value="鳳梨">鳳梨
<Input type="Checkbox" name="food[]" value="西瓜">西瓜
<Br>
<input type="Submit">
</form>
</body></html>[/code]既然核取項目已經成為陣列變數的元素,那該如何將元素列出呢?想起來了吧!就是我們已經介紹過的for迴圈ㄚ:
checkbox_2_ans.php[code]<html><head>
<title>核取按鈕元件使用</title>
</head><body>
您的選擇:
<?
$myfood=$_REQUEST["food"];
$num=count($myfood);
for ($x=0; $x<$num; $x++)
{
echo "$myfood[$x] ,";
}
?>
</body></html>[/code]

小誌 發表於 2011-4-19 10:07

使用for敘述輸出陣列元素是基本功,難就難在如何在輸出時為每個陣列元素間加入分隔符號,像圖5-29,是在每個陣列元素間加入逗號了,可是,最後一個元素後面卻多了一個逗號,這時候,我們可以利用「join()」函數來解決:
checkbox_3_ans.php[code]<html><head>
<title>核取按鈕元件使用</title>
</head><body>
您的選擇:
<?
$myfood=$_REQUEST["food"];
echo join(",",$myfood);
?>
</body></html>[/code]join()函數不僅可在元素間加入特定的字串,同時也將陣列中的元素一一做輸出,除了join()函數外,「implode()」函數亦有相同功能:
implode()函數格式[code]string implode ( string glue, array pieces)[/code]例如:範例ex5_15.php[code]<?
$Myarray = array("春天","夏天","秋天","冬天");
echo implode("<br>",$Myarray);
//輸出'春天<br>夏天<br>秋天<br>冬天'
?>[/code]

carlkyo 發表於 2012-10-27 10:19

學長,我這個FUNCTION可以寫得再好點嗎
謝謝[code]function showgroup(){
$sql = 'SELECT * FROM `group` LIMIT 20';
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result))
            {
                       
echo $row['groupname']."'<input type='checkbox' name='perm[]' value='".$row['groupid']."'/>";
}
}[/code]

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供