这是用户界面,用户从表单中选择fromdate
和todate
。
<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;
然后在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中完成吗?
答案 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);
我会修复我的数据库数据。
您只需要清理一次,以避免使用一些复杂的脚本来绕过一些格式错误的数据。