我正在使用JQuery datepicker来允许用户选择一天并预订。 然后我将日期保存在数据库中, 稍后,我从数据库中获取日期并在datapicker中禁用这些日期,以便下一个用户无法选择预订的天数。 到目前为止一切顺利。
当用户选择他们想要预订的日期时,我也需要禁用该日期。 我正在使用php将所选日期保存在数据库中以及其他一些有关用户的信息。 然后我使用ajax再次通过php加载日期并禁用它们。
我怎样才能禁用它们?我用php或javascript做到了吗? 我不知道如何在选定的日期之后获得一天以及如何保存它?或者我应该保存它,或者稍后当我从ajax调用返回第一个日期然后循环到日期并在第二天获得一些函数时添加它?
答案 0 :(得分:1)
如果您只需将日期列表返回到DatePicker的beforeShowDay
方法,我就会使用PHP。
当您将数据库中的日期添加到列表时,也可以使用strtotime($Date, '1 day')
在第二天添加。
编辑:
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT distinct Date, DATE_ADD(Date, INTERVAL 31 DAY) as Tomorrow from Table";
$result = $mysqli->query($query);
$Dates = array();
/* numeric array */
while(($row = $result->fetch_array(MYSQLI_NUM)) !== null)
{
//$Tomorrow = strtotime('1 day', $row['Date']);
$Tomorrow = $row['Tomorrow'];
if(!in_array($row['Date'], $Dates)) $Dates[] = $row['Date'];
if(!in_array($Tomorrow, $Dates)) $Dates[] = $Tomorrow;
}
/* free result set */
$result->free();
/* close connection */
$mysqli->close();
header('content-type: application/json');
die(json_encode(array('Dates' => $Dates)));
答案 1 :(得分:0)
您可以使用PHP strtotime()
功能:
strtotime("+1 day", $reservationDate)
答案 2 :(得分:0)
您可以调用datepicker的任何javascript函数onSelect
只是一个例子
onSelect: function(dateText, inst){
//dateFormat: 'DD, MM d, yy'
var theDate = $(inst).datepicker.formatDate('DD, MM d, yy', $(inst).datepicker.('getDate'));
$("#temp_date_start").text(theDate);
}
答案 3 :(得分:0)
如果我必须解决这个问题。我会通过向PHP(从JavaScript)发送一个日期然后使用PHP将两个日期添加到数据库来完成此操作。所以我会使用PHP日期功能来获取第二天(例如使用http://www.php.net/manual/en/datetime.add.php)。这是因为在JQuery中使用日期并不像在PHP中那么容易,但并不是因为当然不可能这样做是不容易的: - )
但是如果你想实时使用这个功能。例如,如果您在单击所选日期和禁用这些日期之间没有页面刷新。在这种情况下,我建议您的PHP后台调用返回禁用的日期(或元素的ID或类似的东西)。
tl; dr:向PHP发送一个日期,使用PHP日期函数获取第二天,在数据库中保存两个日期
答案 4 :(得分:0)
$("#elementID").datepicker({
onSelect: function(selectedDate) {
var minDate = $(this).datepicker('getDate'); //get selectedDate
minDate.setDate(minDate.getDate()+1); //adds one day to minDate
//do whatever you do to disable the date using "minDate"
}
});