1

我正在使用 JQuery datepicker 来允许用户选择一天并预订一些东西。然后我将日期保存在数据库中,稍后我从数据库中获取日期并在数据选择器中禁用这些日期,以便下一个用户无法选择预订的日期。到目前为止,一切都很好。

当用户选择他们想要预订的日期时,我也需要禁用后天。我正在使用 php 将所选日期与有关用户的其他一些信息一起保存在数据库中。然后我使用 ajax 再次通过 php 加载日期并禁用它们。

之后我该如何禁用它们?我用 php 还是 javascript 来做呢?我不知道如何获得选定日期后的第二天以及如何保存它?或者我应该保存它还是稍后在我从 ajax 调用中取回第一个日期时添加它,然后循环遍历这些日期并使用某些函数获取第二天?

4

5 回答 5

1

如果可以的话,我会使用 PHP,只需将日期列表返回给beforeShowDayDatePicker 的方法。

当您将数据库中的日期添加到列表中时,也可以使用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)));
于 2012-11-26T14:57:30.493 回答
0

您可以使用 PHPstrtotime()函数:

strtotime("+1 day", $reservationDate)

于 2012-11-26T14:58:57.307 回答
0

您可以调用onSelectdatepicker 的任何 javascript 函数

举个例子

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); }

于 2012-11-26T15:00:38.203 回答
0

如果我必须解决这个问题。我会通过将一个日期发送到 PHP(来自 JavaScript)然后使用 PHP 将两个日期添加到数据库来做到这一点。所以我会使用 PHP 日期功能来获取第二天(例如使用http://www.php.net/manual/en/datetime.add.php)。这是因为在 JQuery 中处理日期不像在 PHP 中那么容易,但这并不是因为它不容易,当然不可能:-)

但是,如果您想实时使用该功能。例如,如果您在单击所选日期和禁用这些日期之间没有刷新页面。在这种情况下,我建议您的 PHP 后台调用返回要禁用的日期(或元素的 id 或类似的东西)。

tl;dr:向 PHP 发送一个日期,使用 PHP 日期函数获取第二天,将两个日期保存在数据库中

于 2012-11-26T15:01:58.527 回答
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"
       }
});
于 2012-11-26T15:02:33.300 回答