Php 用一个表单字段发布两个数据
我将十几个三元组Php 用一个表单字段发布两个数据,php,forms,Php,Forms,我将十几个三元组{year-month-day}放入一个HTML选择输入中 目前我确实: <select name="period"> <option value="2014-10-23"> 我想知道PHP是否可以将这些值直接输入到不同的变量中 比如: <select name="year;month;day"> <option value="2014;10;23"> $_POST['year'] $_POST['month']
{year-month-day}
放入一个HTML选择输入中
目前我确实:
<select name="period">
<option value="2014-10-23">
我想知道PHP是否可以将这些值直接输入到不同的变量中
比如:
<select name="year;month;day">
<option value="2014;10;23">
$_POST['year']
$_POST['month']
$_POST['day']
$\u邮政['年']
$\邮政['month']
$\邮政['day']
您可以在此处尝试(未测试)
2014-10-23
并将其转换为
$myDate = json_decode($_POST['period']);
echo "<pre>";
print_r($myDate);
echo "</pre>";
$myDate=json_decode($_POST['period']);
回声“;
打印(myDate);
回声“;
在这种情况下,您还可以轻松地将数据传递给javascript/ajax,因为您也可以将jsonString转换为数组。您可以在这里尝试(未经测试)
2014-10-23
并将其转换为
$myDate = json_decode($_POST['period']);
echo "<pre>";
print_r($myDate);
echo "</pre>";
$myDate=json_decode($_POST['period']);
回声“;
打印(myDate);
回声“;
在这种情况下,您还可以轻松地将数据传递给javascript/ajax,因为您也可以将jsonString转换为数组。此处未测试的代码
<input name="year" /><input name="month" />...
将其添加到脚本的入口点,它将自动转换您在此处描述的未测试代码的格式
<input name="year" /><input name="month" />...
将其添加到脚本的入口点,它会自动转换您描述的格式如果需要多个字段,则必须发送多个字段
list($year, $month, $day) = explode(';', $_POST['date']);
如果需要多个字段,则必须发送多个字段
list($year, $month, $day) = explode(';', $_POST['date']);
我建议采用另一种方法:将日期存储在对象中。基本上,您有一个变量(
$date
),它包含一个对象(PHP的DateTime
类的实例),您可以使用它的方法(在本例中是format()
方法)来检索年、月、日和/或其他属性(如星期几等)
您可以使用现有的HTML:
$date = new DateTime($_POST['period']);
通过初始化一个新的DateTime
对象并将日期(以Y-m-d
格式)传递给它,DateTime
对象将自动保存正确的日期值
现在,您可以使用该对象上的方法检索年、月和日:
注意:DateTime::format()
接受的格式与接受的格式相同
还要注意的是,即使只传递了一个日期(没有时间),变量
$date
仍然保存着一个完整的DateTime
对象。它的值在PHP内部存储为2014-05-22 00:00:00
,因此$date->format('H:i:s')
将返回00:00
。如果在格式的参数中只使用Y
、m
和d
,这当然不会产生任何效果。我建议使用另一种方法:将日期存储在对象中。基本上,您有一个变量($date
),它包含一个对象(PHP的DateTime
类的实例),您可以使用它的方法(在本例中是format()
方法)来检索年、月、日和/或其他属性(如星期几等)
您可以使用现有的HTML:
$date = new DateTime($_POST['period']);
通过初始化一个新的DateTime
对象并将日期(以Y-m-d
格式)传递给它,DateTime
对象将自动保存正确的日期值
现在,您可以使用该对象上的方法检索年、月和日:
注意:DateTime::format()
接受的格式与接受的格式相同
还要注意的是,即使只传递了一个日期(没有时间),变量$date
仍然保存着一个完整的DateTime
对象。它的值在PHP内部存储为2014-05-22 00:00:00
,因此$date->format('H:i:s')
将返回00:00
。如果在格式参数中只使用Y
、m
和d
,这当然不会产生任何效果。更好的方法是分别为年、月、日创建三个选择。@RohitKumarChoudhary为什么这样更好?你不知道OP想要什么。@RohitKumarChoudhary为相同的结果创建一个更大的源代码有什么好处?如果你只想使用一个选择,那么分解
是唯一的方法go@RohitKumarChoudhary这是现有的表单字段方式,但它对用户不够友好。实际上,它不是一个组合框,允许选择每年、每月、然后是每天。它是一个组合框,允许选择非常具体的日期(只有12个)。最好是分别为年、月、日期创建三个选项。@RohitKumarChoudhary为什么这样更好?你不知道OP想要什么。@RohitKumarChoudhary为相同的结果创建一个更大的源代码有什么好处?如果你只想使用一个选择,那么分解
是唯一的方法go@RohitKumarChoudhary这是现有的表单字段方式,但它对用户不够友好。实际上,它不是一个组合框,允许选择每年、每月、然后是每天。这是一个组合框,允许选择非常具体的日期(只有12个)。一次约会他有3个变量?!?!?隐马尔可夫模型。。。应该使用$date['year']
等等…比他一次约会有3个变量?!?!?隐马尔可夫模型。。。应该使用$date['year']
等等…相互测试方法!相互询问的方法!这是有道理的。如果我只有年份和月份,你知道如何使它工作吗?这实际上是一个新问题。。。然而,我认为这不应该是一个问题<代码>$date=new\DateTime('2014-05')代码>由PHP内部存储为2014-05-01 00:00:00
(就像您通过了2014-05-01
),因此您仍然可以使用format()
方法,而不会出现任何问题,只要您了解format('d')
将简单地返回01
。这是有意义的。如果我只有年份和月份,你知道如何使它工作吗?这实际上是一个新问题。。。然而,我认为这不应该是一个问题<代码>$date=new\DateTime('2014-05')代码>由PHP内部存储为echo $date->format('Y'); //2014
echo $date->format('m'); //05
echo $date->format('d'); //22