TShopping

 找回密碼
 註冊
搜索
查看: 7153|回復: 0
打印 上一主題 下一主題

[教學] 怎麼抓取表單中checkbox的值?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2011-7-27 18:42:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
以PHP+HTML來說,在處理網頁表單時,必須將HTML和PHP兩者做搭配,才能正確抓取表單中的值。透過HTML提交的資料傳輸到一個專門接收和處理表單的值,那該怎麼接收呢?這時候就必須搭配一下PHP語法就能正確接收。不過在接收的同時也會遇到一些突發狀況,CheckBox就是一個例子。
如果單純以TextBox、ListBox、Radio Button來說這都還好,因為傳出的東西只有一個值,但CheckBox卻可能時傳出一個或是多個的值,那接收端要怎樣做才能正確收到這些值呢?查了一下資料,其實在HTML那邊加個陣列的型式就可以利用陣列的方式來讀取這些值。
在介紹陣列處理的方式之前,大家要先了解一下CheckBox的HTML部分該怎麼正確的表示才確保傳進去的值是陣列的型態。首先讓我們看一下表單的CheckBox的部分該怎麼做變化。以下這是單一個CheckBox:

<input type="checkbox" name="cusekey" value="1">

  • type:這個欄位種類,在此是checkbox
  • name:這個欄位的名稱,在此是sport
  • value:當勾選這選項時,表單會傳出的值,在此是傳出"1",也可設定中文。
HTML前端處理CheckBox當然一般使用者可能都會像上面這樣做設定,但超過一個以上的CheckBox時,可能久變成永遠只能抓到第一個CheckBox的值,這就是出錯了。如果你在同一組的選項中有超過一個以上的CheckBox的話,那您就要修改一下CheckBox的HTML部分,改成陣列模式。

  1. <input type="checkbox" name="cusekey[]" value="1">
  2. <input type="checkbox" name="cusekey[]" value="1">
  3. <input type="checkbox" name="cusekey[]" value="1">
  4. <input type="checkbox" name="cusekey[]" value="1">
複製代碼
有注意到不同的地方嗎?就是在name的部分從原本的名稱「cusekey」,改成多一個中括號,變成「cusekey[]」這樣就可以利用陣列的儲存方式,將有勾選的值儲存到陣列,之後傳送到PHP檔案中,再以陣列的方式讀取出來,就可以達成CheckBox傳送一個以上的值了,這是標準的CheckBox的處理方式。
PHP後端處理CheckBox當經過表單提交資料到PHP的檔案內,我們就必須對這些值做接收的動作,並且要弄後續的處理。接收表單的方式在此只針對CheckBox的部分做簡單說明,如果是其它的就請大家自己類推一下。
$cusekey = $_POST ["cusekey"];
這就是網頁PHP後端接收資料的方式,一般來講表單的傳送方式都是透過「POST」傳送,所以才會設定為POST,而["cusekey"]這個東西,就是對應到網頁表單中name的部分,也就是前面設定的sport[]。至於「$cusekey」這則是PHP的變數宣告而已。簡單說就是把透過POST傳送的表單中,裡面name部分等於sport的所有值儲存到$sport這個變數。
讀出PHP陣列內的值接下來要讀出陣列的值,當然讀出的方式有很多種,就看你怎麼去使用。以我自己的例子來說,因為我是要儲存到資料庫,所以我必須抓取每一個值,然後用逗號隔開接著再存進資料庫,所以我可以不用透過foreach之類的東西來讀取,直接使用內建的函數implode就可以達成。所以我的寫法是:
$myallsport = implode (",", $cusekey);
在implode內有個「","」,這表示每讀取一個陣列中的值,用逗號隔開。$sport則代表剛剛我們表單題交之後的陣列,$myallsport則會顯示經過處理之後的答案。
假設剛剛我們勾選了「1」、「2」、「3」,若經過implode處理後,去echo變數$cusekey,就會呈現以下結果:「1,1,1,""」,利用透號隔開,這樣就可以執行資料庫語法儲存進去囉!


 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-5-2 20:20 , Processed in 0.051694 second(s), 18 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表