首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

PHP 處理 HTML 多選框與多選下拉列表表單資料的正確方法

     編輯:程式設計綜合問答

問題現象

HTML 表單中:

  • 多選框 <input type="checkbox" name="favourite" value="..."> 同名多個。
  • 下拉列表加入 multiple="multiple" 後顯示異常(不再單行)。

PHP $_GET['favourite'] 僅取得最後一個值。

原因分析

PHP 預設以「同名參數覆蓋」方式解析查詢字串,導致同名多選框只保留最後一個值。

解決方案

1. 多選框名稱加上 []

<input type="checkbox" name="favourite[]" value="basketball">
<input type="checkbox" name="favourite[]" value="volleyball">
<input type="checkbox" name="favourite[]" value="football">

PHP 中 $_GET['favourite'] 將自動成為陣列,包含所有勾選值。

2. 多選下拉列表加上 size 屬性

<select name="profession" multiple size="2">
  <option value="student">Student</option>
  <option value="teacher">Teacher</option>
  <option value="worker">Worker</option>
</select>

size="2" 指定可見行數;選項超過時出現捲軸,避免一次展開所有選項佔據過多空間。

完整表單範例

<form action="recv.php" method="get">
  UserName: <input type="text" name="username" /><br/>
  Sex: <input type="radio" name="sex" value="male" checked>Male
       <input type="radio" name="sex" value="female">Female<br/>
  Profession: <select name="profession" multiple size="2">
                <option value="student">Student</option>
                <option value="teacher">Teacher</option>
                <option value="worker">Worker</option>
              </select><br/>
  Favourite: <input type="checkbox" name="favourite[]" value="basketball" checked>Basketball
             <input type="checkbox" name="favourite[]" value="volleyball">Volleyball
             <input type="checkbox" name="favourite[]" value="football">Football<br/>
  <input type="submit" value="Submit" />
</form>

PHP 接收碼

<?php
echo '<pre>';
print_r($_GET);
echo '</pre>';
?>

輸出將顯示 favourite 為陣列,profession 為陣列(若多選)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved