Javascript 在ajax、php、mysql中禁用当前日期计数为8的日期
我正在尝试禁用特定日期的计数为8的特定日期。在我的代码中,8次计数后不能使用特定日期。8次计数后会出现警报框。我必须禁用特定日期,而不是警报框。。如何禁用日期。。这是代码Javascript 在ajax、php、mysql中禁用当前日期计数为8的日期,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我正在尝试禁用特定日期的计数为8的特定日期。在我的代码中,8次计数后不能使用特定日期。8次计数后会出现警报框。我必须禁用特定日期,而不是警报框。。如何禁用日期。。这是代码 <input type="date" name="mass_date" id="txtDate" required="required" /></div> <script> $(document).ready(function() { $('#
<input type="date" name="mass_date" id="txtDate" required="required" /></div>
<script>
$(document).ready(function() {
$('#txtDate').change(function(){
var selectedDate = $(this).val();
$.ajax({
type: 'GET',
url: "http://localhost/check_date.php?selectedDate=" +selectedDate,
success: function(data) {
var status= JSON.parse(data);
if((status=="SUCCESS")) {
$('#submitButton').prop('disabled', false);
} else {
alert('Opps! Booking is not available for this day');
}
}
});
});
});
</script>
$(文档).ready(函数(){
$('#txtDate')。更改(函数(){
var selectedDate=$(this.val();
$.ajax({
键入:“GET”,
url:“http://localhost/check_date.php?selectedDate=“+选定日期,
成功:功能(数据){
var status=JSON.parse(数据);
如果((状态=“成功”)){
$(“#提交按钮”).prop('disabled',false);
}否则{
警报(“Opps!当天不提供预订”);
}
}
});
});
});
检查_date.php
<?php
error_reporting(E_ALL);
include_once "db.php";
$selectedDate = $_GET['selectedDate'];
$query2=mysqli_query($con,"SELECT COUNT(*) as booking_count FROM shrine_mass WHERE mass_date='$selectedDate'") or die(mysqli_error($con));
$row=mysqli_fetch_array($query2,MYSQLI_ASSOC);
$count = $row['booking_count'];
if($count < 8) {
echo json_encode("SUCCESS");
} else {
echo json_encode("FAIL");
}
编辑:向下滚动
警告您非常容易受到SQL注入(SQLI攻击)。请利用
话虽如此,我将重写您的PHP页面,以遵循准备好的语句和参数化查询的指导原则
至于你问题中的jQuery部分,我相信你要找的是属性函数,.prop(“disabled”,true)代码>。您已经将其用于submitButton,但通过将属性设置为false来启用按钮除外
jQuery示例,使用您的代码:
$(document).ready(function() {
$('#txtDate').change(function(){
var selectedDate = $(this).val();
$.ajax({
type: 'GET',
url: "http://localhost/check_date.php?selectedDate=" +selectedDate,
success: function(data) {
var status= JSON.parse(data);
if((status=="SUCCESS")) {
$('#submitButton').prop('disabled', false);
} else {
$('#txtDate').prop("disabled", true);
}
}
});
});
});
您的PHP页面,使用准备好的语句和参数化查询:
$(document).ready(function() {
$('#txtDate').change(function(){
var selectedDate = $(this).val();
$.ajax({
type: 'GET',
url: "http://localhost/check_date.php?selectedDate=" +selectedDate,
success: function(data) {
var status= JSON.parse(data);
if((status=="SUCCESS")) {
$('#submitButton').prop('disabled', false);
} else {
$('#txtDate').prop("disabled", true);
}
}
});
});
});
根据我对您问题的理解,您希望在其他用户8次选择某个给定日期后,阻止该用户输入该日期。使用@Martin的答案,您将完全禁用日期输入,我认为这不是您想要的。我想您正在寻找一种解决方案,可以防止输入“完全预订”日期,但不能输入其他日期
我认为您无法停止在type=“date”输入中选择任何日期。有一些属性可以将输入限制为日期范围,但不能限制特定日期
在一定范围内
因此,唯一可能的解决方案必须包括根据一些数据检查新输入的日期,以确定是否可以使用它。您目前正在ajax调用期间执行此操作,坦率地说,假设您的应用程序同时可供多个用户使用,这是唯一可行的方法。页面加载时可能传递给浏览器的任何数据都可能在几秒钟后被其他用户的操作呈现为“过期”
因此,我对您的问题的回答是否定的,没有比您当前的策略更好的方法来实现您的目标,也没有比引用您的数据库的策略更好的方法。警告您对SQL注入(SQLI攻击)持开放态度。请使用准备好的语句和参数化查询。这是非常重要的。您的整个数据库处于危险之中!这方面有更新吗?您找到解决方案了吗?我希望禁用特定日期而不是日历,然后我建议使用jQuery日期选择器或引导日期选择器,而不是常规的HTML5日期选择器。如果OP愿意使用不同于常规HTML5日期选择器的日期选择器,例如jQuery日期选择器或引导日期选择器,然后就可以禁用特定日期了。