繼續從my earlier question一個值,我怎麼能結合的月,日和年<select>
s轉換爲單一的「日期」的值,使之到達我的PHP腳本作爲將多個領域的表單提交
$_POST['date']
,MySQL格式YYYY-MM-DD
?
繼續從my earlier question一個值,我怎麼能結合的月,日和年<select>
s轉換爲單一的「日期」的值,使之到達我的PHP腳本作爲將多個領域的表單提交
$_POST['date']
,MySQL格式YYYY-MM-DD
?
你可以使用一個隱藏字段,並建立其價值的onsubmit,但如果我是你,我會簡單地使用數組表示法之名屬性,和內爆與陣列「 - 」作爲膠:這樣
<select name="date[year]">
...
<select name="date[month]">
...
<select name="date[day]">
...
PHP:
$date = implode('-', $_POST['date'])
//validate date format here
你可以創建一個隱藏字段,以及表單提交之前填寫它
分別收集該數據的點是確保其格式是正確。如果你提交一個完整的日期到你的php腳本中,php腳本的驗證選項會涉及更多。最好提交3個表單域,以簡單的方式驗證它們,然後在php中創建日期。
如果你堅持提交一個完整的日期,一個隱藏的字段(如@kgb所說的)可能是最簡單的方法。
將它結合到您的PHP腳本中,沒有理由爲此添加對JavaScript的依賴。 Build on things that work。此外,如果您在服務器上執行此操作,則不會受到潛在的惡意或意外干擾。
那麼,該項目已經(必然)與JavaScript相關,並且沒有辦法繞過它。 – 2010-06-23 15:49:29
你可以使用JavaScript或PHP本身來做到這一點,但沒有本地的xhtml手段,這是可能的(據我所知)。
如果您使用javascript來實現此目的(使用隱藏字段將數據提交給您的php腳本),您仍然必須在使用php處理或將數據插入數據庫之前驗證服務器端的字段。出於這個原因,我將跳過javascript選項,並直接使用我將使用的php方法。
我假設的形式DD白天,毫米爲一個月,YYYY爲一年的數值數據:
$day = $_POST['day']; // assume 23
$month = $_POST['month']; // assume 06
$year = $_POST['year']; // assume 2010
$mysql_date_format = $year . "-" . $month . "-" . $day; // should result in 2010-06-23
使用$mysql_date_format
在您的腳本(S)根據您的需要。
如果你想這樣做,我建議你採取以下步驟:
<input type="text" name="wtv" />
有指示預期的格式YYYY-MM-DD
的消息。<input type="text" name="wtv" />
成爲type="hidden"
;還添加了三個<select>
元素 - 一個用於一天,一個月和一年。不要給這些<select>
元素name
屬性。<select>
元素添加一個onchange
事件處理程序,以便修改它們時,可以更改原始<input type="hidden" name="wtv" />
的值以反映所選值。當窗體的就是提交,因爲<select>
元素沒有name
屬性的信息將不會被髮送到服務器,但是你的隱藏<input />
確實有一個名字,所以它會被髮送,格式爲一個約會。
我以前寫過一個這樣的小工具...我會嘗試獲取一個演示頁面並鏈接到它。
不要擔心JS支持。該應用需要JS開啓。 – 2010-06-23 15:51:15
如果您執行以下操作,您可以得到您正在查找的結果。
<form method="post">
<select name="date[]" id="year">
<option>2010</option>
<option>2011</option>
</select>
<select name="date[]" id="month">
<option>8</option>
<option>9</option>
</select>
<select name="date[]" id="day">
<option>21</option>
<option>22</option>
</select>
<input type="submit">
</form>
所得$_POST
VAR持有以下
Array
(
[date] => Array
(
[0] => 2011
[1] => 9
[2] => 22
)
)
然後,所有你需要做的是$date = implode('-', $_POST['date']);
好主意!但是,我需要在一個頁面上添加一堆這樣的內容,所以我需要明確指定索引:'date [0] []','date [1] []'等等,它。 – 2010-06-23 15:29:50
,我從你原來的職位注意到,您使用的是Datepicker()
的jQuery插件來獲得首先是日期。爲什麼不把default date format設置爲'yy-mm-dd'
?
如果您想驗證當它到達PHP格式,請使用
date('Y-m-d', strtotime($_POST['date']));
不,我*不*使用任何插件。除此之外,我在看這個的原因是因爲Safari無法正確解析YY-MM-DD或YYYY-MM-DD。 – 2010-06-23 16:19:33
我推測你的原因是你提到這是後續問題,你在詢問Datepicker插件。我對這種混亂表示抱歉。此外,作爲單挑,我發現上週IE瀏覽器在日期上有困難,如果這個月是數值(2010-06-23與2010年6月23日)。 – Joseph 2010-06-23 19:37:36
我遇到同樣的需求,因爲原來的海報,但我回避接觸PHP腳本作爲一個其作用CMS。我將如何去建立一個隱藏的領域onSubmit? – snlan 2014-09-06 16:22:40
在窗體中創建一個隱藏的輸入,其中「date」爲'name'屬性,然後編寫一個js函數,獲取三個選擇的值,並將其注入到隱藏輸入的value屬性中,最後返回true,然後將其綁定到表單的提交事件。 – greg0ire 2014-09-06 19:32:37