標題:
5-6-5 核取按鈕(Checkbox)
[打印本頁]
作者:
小誌
時間:
2011-4-19 10:04
標題:
5-6-5 核取按鈕(Checkbox)
5-6-5 核取按鈕(Checkbox)
核取按鈕(Checkbox)適用於多備選案答案且多正確答案選取的場合,如同複選的選擇題,例如興趣、嗜好…等:
<input type=”Checkbox” name=”識別名” value=”資料值”>
複製代碼
與單選按鈕相同的是使用者只需點選答案,不需要填寫資料,所以必須為每一個核取按鈕建立不同的資料值,而且為了讓多個核取按鈕成為複選的群組,故同群組內的核取按鈕其「name」屬性值必須為相同的「識別名」。
checkbox.php
<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>
複製代碼
若要將某個核取按鈕預設為已選取,則加入「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
<html><head>
<title>核取按鈕元件使用</title>
</head><body>
<?
$myfood=$_REQUEST["food"];
?>
您的選擇(替代前):<?=$myfood?>
<P>
您的選擇(替代後):<?=str_replace(",",";",$myfood)?>
</body></html>
複製代碼
作者:
小誌
時間:
2011-4-19 10:06
你騙人!我不管選取幾個項目,它就是只會出現最後一個被選取的項目,呵,您的情形是不是像圖5-28一樣ㄚ!這是PHP中的一個陷阱,像核取方塊這種元件,可以一個識別名稱記錄很多資料內容的狀況,我們用一個識別名來處理當然行不通!因此,表單的核取方塊識別名應該要把它改成陣列形式:
checkbox_2.php
<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>
複製代碼
既然核取項目已經成為陣列變數的元素,那該如何將元素列出呢?想起來了吧!就是我們已經介紹過的for迴圈ㄚ:
checkbox_2_ans.php
<html><head>
<title>核取按鈕元件使用</title>
</head><body>
您的選擇:
<?
$myfood=$_REQUEST["food"];
$num=count($myfood);
for ($x=0; $x<$num; $x++)
{
echo "$myfood[$x] ,";
}
?>
</body></html>
複製代碼
作者:
小誌
時間:
2011-4-19 10:07
使用for敘述輸出陣列元素是基本功,難就難在如何在輸出時為每個陣列元素間加入分隔符號,像圖5-29,是在每個陣列元素間加入逗號了,可是,最後一個元素後面卻多了一個逗號,這時候,我們可以利用「join()」函數來解決:
checkbox_3_ans.php
<html><head>
<title>核取按鈕元件使用</title>
</head><body>
您的選擇:
<?
$myfood=$_REQUEST["food"];
echo join(",",$myfood);
?>
</body></html>
複製代碼
join()函數不僅可在元素間加入特定的字串,同時也將陣列中的元素一一做輸出,除了join()函數外,「implode()」函數亦有相同功能:
implode()函數格式
string implode ( string glue, array pieces)
複製代碼
例如:範例ex5_15.php
<?
$Myarray = array("春天","夏天","秋天","冬天");
echo implode("<br>",$Myarray);
//輸出'春天<br>夏天<br>秋天<br>冬天'
?>
複製代碼
作者:
carlkyo
時間:
2012-10-27 10:19
學長,我這個FUNCTION可以寫得再好點嗎
謝謝
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']."'/>";
}
}
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)