PHP中實(shí)現(xiàn)接收多個(gè)name相同但Value不相同表單數(shù)據(jù)實(shí)例
最近在一個(gè)詢盤留言管理系統(tǒng)時(shí)候一個(gè)問題,留言的前臺(tái)的表單當(dāng)中出現(xiàn)很多name值相同的input框,這些框是由用戶填寫的各不相同的值,現(xiàn)在要遷移到php平臺(tái)上,而且要求不能改變前臺(tái)的任何表單(因?yàn)橛玫竭@個(gè)表單的網(wǎng)站實(shí)在是太多了,所以必須要考慮轉(zhuǎn)移的兼容性,就連form的提交地址也不能變,必須是提交到某個(gè)asp頁(yè)面上)。form提交地址問題,可以用偽靜態(tài)或其它方法直接解決。由于以前的系統(tǒng)是由asp做的,asp在處理相同name值的表單的時(shí)候,是直接用逗號(hào)把前臺(tái)提交的值連起來,而php卻不一樣,它接收相同的name的input的時(shí)候,是最后一個(gè)把前面的值給覆蓋掉了。那么,怎么樣在不改寫前臺(tái)的基礎(chǔ)上,做到能接受到所有name相同的input的值呢?當(dāng)時(shí)腦子里浮現(xiàn)兩個(gè)想法,第一個(gè)是讓這個(gè)input的name以數(shù)組的方式傳到后臺(tái),然后作出處理,但是很快被否定掉了,因?yàn)檫@樣也必須要改動(dòng)前臺(tái)的代碼,讓
<input type="text" name="a" />改成<input type="text" name="a[]" />。第二個(gè)想法是php配置當(dāng)中,有沒有類似的設(shè)置可以讓php像asp這樣處理相同name值的表單,查了半天資料,也沒有找到。
最后發(fā)現(xiàn),只能退而求其次,稍微改動(dòng)一下前臺(tái),把name換成數(shù)組,幸好這樣去用的網(wǎng)站并不多。那么接下來就是后臺(tái)處理數(shù)據(jù)的問題了,前臺(tái)的name有一部分改了,這時(shí)候就會(huì)出現(xiàn)一種情況,php不知道由form提交過來的是字符串還是數(shù)組,那么怎么樣去做呢,我的辦法是寫一個(gè)函數(shù):
function input_treat($input){ if(gettype($input)=="string"){ return htmlentities(trim($input),ENT_QUOTES); }else if(gettype($input)=="array"){ $nd=""; foreach($input as $v){ $nd .=htmlentities(trim($v),ENT_QUOTES)." "; } return $nd; }else{ return false; } }
用input_treat()函數(shù)去處理GET或者POST過來的值,如果是字符串,那么把字符串處理一下返回,如果是數(shù)組,那么遍歷這個(gè)輸入,用空格把數(shù)組的每個(gè)元素連起來,然后返回整個(gè)連起來的字符串。
這樣,整個(gè)需求就實(shí)現(xiàn)了,缺點(diǎn)是對(duì)一部分使用相同name表單的網(wǎng)站必須要更改一下數(shù)據(jù),如果你有更好的方法,歡迎和我留言溝通。
- PHP 表單提交給自己
- php 表單數(shù)據(jù)的獲取代碼
- php表單轉(zhuǎn)換textarea換行符的方法
- php提交表單時(shí)判斷 if($_POST[submit])與 if(isset($_POST[submit])) 的區(qū)別
- 用PHP的超級(jí)變量$_POST獲取HTML表單(HTML Form) 數(shù)據(jù)
- php中一個(gè)完整表單處理實(shí)現(xiàn)代碼
- PHP判斷表單復(fù)選框選中狀態(tài)完整例子
- ThinkPHP表單自動(dòng)提交驗(yàn)證實(shí)例教程
- PHP獲取表單所有復(fù)選框的值的方法
- thinkPHP實(shí)現(xiàn)表單自動(dòng)驗(yàn)證
- php提交表單發(fā)送郵件的方法
- PHP代碼實(shí)現(xiàn)表單數(shù)據(jù)驗(yàn)證類
- 解決php表單重復(fù)提交實(shí)現(xiàn)方法
- 表單提交錯(cuò)誤后返回內(nèi)容消失問題的解決方法(PHP網(wǎng)站)
- php實(shí)現(xiàn)表單多按鈕提交action的處理方法
- php防止用戶重復(fù)提交表單
- php表單提交實(shí)例講解
相關(guān)文章
PHP如何使用cURL實(shí)現(xiàn)Get和Post請(qǐng)求
這篇文章主要介紹了PHP如何使用cURL實(shí)現(xiàn)Get和Post請(qǐng)求,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07PHP函數(shù)篇詳解十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換函數(shù)說明
中文字符編碼研究系列第一期,PHP函數(shù)篇詳解十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制互相轉(zhuǎn)換函數(shù)說明,主要掌握各進(jìn)制轉(zhuǎn)換的方法,以應(yīng)用于實(shí)際開發(fā)2011-12-12Smarty foreach控制循環(huán)次數(shù)的實(shí)現(xiàn)詳解
在smarty中數(shù)組是經(jīng)常會(huì)用到的,循環(huán)遍歷數(shù)組用 section 或者 foreach ,如何得到數(shù)組長(zhǎng)度或者判斷一個(gè)數(shù)組個(gè)數(shù)呢2013-07-07PHP實(shí)現(xiàn)一維數(shù)組與二維數(shù)組去重功能示例
這篇文章主要介紹了PHP實(shí)現(xiàn)一維數(shù)組與二維數(shù)組去重功能,結(jié)合實(shí)例形式分析了php針對(duì)一維數(shù)組與二維數(shù)組進(jìn)行遍歷、判斷、排序、去重等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05PHP+MySql+jQuery實(shí)現(xiàn)的"頂"和"踩"投票功能
這篇文章主要為大家詳細(xì)介紹了PHP+MySql+jQuery實(shí)現(xiàn)的"頂"和"踩"投票功能,具有一定的參考價(jià)值,感興趣的朋友可以參考一下2016-05-05