数据库日期和 jquery 日期验证

Posted

技术标签:

【中文标题】数据库日期和 jquery 日期验证【英文标题】:Database date and jquery date validation 【发布时间】:2016-01-26 13:31:31 【问题描述】:

我的数据库有下表

event_id                           event_name               event_date
-------------------------------------------------------------------------
1                                  Training on C/C++        02-11-2015           
2                                  Core Java                03-11-2015
3                                  Advanced Java            04-11-2015
4                                  Cloud Computing          09-11-2015
5                                  Cloud Computing          10-11-2015
6                                  Big Data                 12-11-2015

日期只是字符串,即 event_date 列是 varchar 类型。我需要检查从 jQuery datepicker 中选择的日期是否与 event_date 列中的至少一个日期匹配。对于选择的任何其他日期,除了 02-11-2015,else 中的 alert 会弹出。当我运行它时,只有第一个日期得到正确验证。循环有问题吗?我该如何解决这个问题?

<script>
    $(document).ready(function () 
        $("#datepicker").datepicker(
            dateFormat: "dd-mm-yy"   
        );
        $('form#dateform').submit(function()   
            var aselectedDate = $('#datepicker').val();
            localStorage.setItem('adate', aselectedDate);
        );
    );
</script>

<?php
    $adateStringValue = (isset($_POST['datepicker'])) ? $_POST['datepicker'] : '';
    echo '<form id="dateform" name="dateform" action="" method="POST"><br><br>
          <table>
              <tr>
                  <td><b>Select a date &nbsp;&nbsp;<b></td>
                  <td><input id="datepicker" name="datepicker" size="15" value="' .$adateStringValue . '"/></td>
              </tr>
          </table>
          <br>
          <input type="submit" name="submit" value="Submit"/>
      </form>';

    if (isset($_POST['submit'])) 
        
        $sql1 = "SELECT event_date from events_schedule";
        $getDates_query = mysql_query($sql1, $con);
        $fetchdates = mysql_fetch_array($getDates_query);

        while ($fetchdates = mysql_fetch_array($getDates_query)) 
        
            if ($fetchdates['event_date'] == $adateStringValue) 
            
                $message = "You have selected this date for your training: $adateStringValue";
                echo "<script>alert('$message');</script>";
                break;
            
            else
            
                $message1 = "No Training Event is scheduled on this date. Please select another date";
                echo "<script>alert('$message1');</script>";
                break;
            
        
    
?>

【问题讨论】:

【参考方案1】:

所以.. ..您从数据库中获取所有日期.. ..并且每次都遍历它们,为每一行弹出一个 JS 警报框。

为什么不在查询中使用日期选择器中的日期。

$sql1 = "SELECT * FROM events_schedule WHERE event_date='$adateStringValue'";

处理响应是否返回记录。

..只是一个建议。

【讨论】:

【参考方案2】:

如果我得到你想要的,你可以使用strtotime 函数。它将传递给它的日期时间字符串转换为可用于比较的 Unix 时间戳

如果 datepicker 中的日期是 02-11-2015,那么函数将返回 1446422400 并且如果存储在 db 中的日期是 02-11-2015 然后该函数也将返回 1446422400 以便您可以比较这两个 easiyl。

$var1 = strtotime($adateStringValue);

$var2 = strtotime($fetchdates['event_date']);

那么可以比较为if($var1 == $var2)

注意:这只是函数使用的示例和说明。您必须根据需要进行修改。

【讨论】:

谢谢.. 但这仍然没有解决问题。它仅适用于 2015 年 3 月 11 日这个日期。

以上是关于数据库日期和 jquery 日期验证的主要内容,如果未能解决你的问题,请参考以下文章

剑道 jQuery 电子表格日期值保存

插入日期选择器后 Jquery 表单验证不起作用

不显眼的验证/jQuery 客户端验证输入的日期是不是超过当前日期

使用 jQuery datepicker 自定义日期格式验证(无法摆脱美国日期验证)

Jquery datepicker:验证日期 mm/dd/yyyy

使用 JQuery Validate [重复] 以 dd/mm/yyyy 格式验证日期