今天遇到一個問題,要保存很多表單信息,苦惱了許久,終於發現一個挺不錯的方法,以數組的形式把表單中的數據提交至後台進行保存。
其實實作起來很簡單,就是給表單中要提交的資訊的name命名時要有一定的規範,我們先比較下下面這兩種方式的差別:
第一種、普通的方式,每個要提交的值都有一個名稱
<form action="./index.php" method="get"> <div> <input type="text" name="name1" /> <input type="text" name="num1" /> <input type="text" name="img1" /> </div> <br> <div> <input type="text" name="name2" /> <input type="text" name="num2" /> <input type="text" name="img2" /> </div> <br> <div> <input type="text" name="name3" /> <input type="text" name="num3" /> <input type="text" name="img3" /> </div> ...... <input type="submit" value="Submit" /> </form>
服務(index.php)很簡單就兩句話
<?php echo "<pre class="brush:php;toolbar:false">"; print_r($_GET);
在渲染好的網頁上填入下面資訊並點擊提交
透過瀏覽器看到的 Query String Paramaters是這樣的
在服務段會收到這樣的訊息
對與後端來說這樣可能不是太好處理,要是能把同一組的三個資訊放在一個數組中,是不是就好處理多了,下面再看看另外一種方式
第二種、陣列的方式進行表單提交
<form action="./index.php" method="get"> <div> <input type="text" name="infos[1][name]" /> <input type="text" name="infos[1][num]" /> <input type="text" name="infos[1][img]" /> </div> <br> <div> <input type="text" name="infos[2][name]" /> <input type="text" name="infos[2][num]" /> <input type="text" name="infos[2][img]" /> </div> <br> <div> <input type="text" name="infos[3][name]" /> <input type="text" name="infos[3][num]" /> <input type="text" name="infos[3][img]" /> </div> ...... <input type="submit" value="Submit" /> </form>
細心看看就會發現,要提交的資料的名字name發生了變化,在這裡看可能還不太明顯,當點擊提交後會發現傳到後端的值整齊多了,看看下面的截圖
透過瀏覽器插件解析過的查詢字串是這樣的
服務端列印出來的資料是這樣的:
當後台收到這樣的資料的時候是不是就好處理多了,省了好多事,當然,這個地方還有要注意的地方,在給要提交的值命名的時候數組中不用加引號,加引號之後後端的鍵值中會存在引號,這點要注意。還有一點要注意的是,現在更流行的做法是ajax提交,用ajax提交的時候怎麼取得表單中的值呢?這個其實也很簡單透過jquery提供的serialize()方法可以很方便的將所有要提交的內容拼接成url字串,然後透過get的方式就可以提交給後台了。
當然了,實際中還可能遇到這樣的問題,要提交的組數(像上面的1、2、3)是不確定的,可以在前端隨意的添加,這個時候怎麼去用數組提交這些內容呢?這個還是可以透過合適的明明很便捷的解決掉的,
<form action="./index.php" method="get"> <div> <input type="text" name="infos[name][]" /> <input type="text" name="infos[num][]" /> <input type="text" name="infos[img][]" /> </div> <br> <div> <input type="text" name="infos[name][]" /> <input type="text" name="infos[num][]" /> <input type="text" name="infos[img][]" /> </div> <br> <div> <input type="text" name="infos[name][]" /> <input type="text" name="infos[num][]" /> <input type="text" name="infos[img][]" /> </div> ...... <input type="submit" value="Submit" /> </form>
先看看瀏覽器傳遞的資料
這時候後端收到的資料是這樣的
得到這樣的數據,也很容易將每一組的資訊進行歸類了。是不是很方便呢,在沒有使用這個方法之前,我每次遇到這樣的問題都很頭疼,現在可以輕鬆的解決掉了。
本文版權歸作者iforever(luluyrt@163.com)所有,未經作者本人同意禁止任何形式的轉載,轉載文章之後必須在文章頁面明顯位置給出作者和原文連接,否則保留追究法律責任的權利。
以上就介紹了數組方式進行表單提交,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。