如何从HTML5输入类型="日期"获取日期值

时间:2017-08-05 13:52:45

标签: php jquery html mysql date

这是用户界面,用户从表单中选择fromdatetodate



<html>
<form name="frmSearch" method="post" action="searchdate2.php">


  <label> From date </label>

  <input type="date" name="fromdate" />

  <label> To date</label>

  <input type="date" name="todate" />

  <input type="submit" name="go" value="Search">


</form>
&#13;
&#13;
&#13;

然后在searchdate2.php中,我试图显示与mysql匹配的日期范围的结果

include('connect-db.php');

   $result = mysqli_query("SELECT * FROM treatmentdetail 
   WHERE nextdate BETWEEN '" . $_POST['fromdate'] . "' AND  '" . 
   $_POST['todate'] . "'");


 while($row = mysqli_fetch_array( $result ,MYSQL_ASSOC)) {

  echo "<tr>";
  echo '<td width="100px">' . $row['id'] . '</td>';
  echo '<td width="200px">' . $row['patientid'] . '</td>';
  echo '<td width="200px">' . $row['treatmentid'] . '</td>';

   }

  echo "</tr>";
  echo "</table>";
   ?>

我试图弄清楚如何使用HTML5输入类型获取日期值=&#34;日期&#34;,

我可以在PHP或JQuery中完成吗?

2 个答案:

答案 0 :(得分:1)

  

我可以在PHP或JQuery中完成吗?

在JavaScript中,在浏览器上,您可以从valueAsDate property

获取它
// Without jQuery:
console.log(document.querySelector("input[name=fromdate]).valueAsDate);
// With jQuery:
console.log($("input[name=fromdate])[0].prop("valueAsDate"));

要从PHP访问它,您需要提交表单并从$_GET$_POST(视情况而定)获取字符串值并进行解析。

答案 1 :(得分:1)

BETWEEN SQL运算符使用数值...你给它字符串。

我建议您使用><运算符,它们使用字符串:

$result = mysqli_query("SELECT * FROM treatmentdetail WHERE nextdate > '" . $_POST['fromdate'] . "' AND nextdate <  '" . $_POST['todate'] . "'");


<小时/> 修改

从您上次的评论(«如果我在数据库中有2017-7-1 ... ),我认为我发现了您的实际问题。
HTML <input type="date">返回前导零。

数据库中月份和日期的前导零缺失 你是一个人,你不需要领先的零来理解“2017-7-1”与“2017-07-01”的日期相同。

但机器并不同意。
对它来说,那些不是日期......那些是字符串。第一个值更大,因为7在字符位置5处大于0
“abcde”大于“aaabc”
“12345”大于“11123”。

见这里:

date_db = "2017-7-1";

date_post="2017-07-01";

greater = (date_db > date_post);
equal = (date_db == date_post);
smaller = (date_db < date_post);

console.log(greater);
console.log(equal);
console.log(smaller);

我会修复我的数据库数据。
您只需要清理一次,以避免使用一些复杂的脚本来绕过一些格式错误的数据。