数据库日期和jquery日期验证

时间:2015-10-27 08:20:57

标签: javascript php jquery mysql datepicker

我的数据库有下表

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日期选择器中选择的日期是否与event_date列中的至少一个日期匹配。对于所选的任何其他日期,除了2015年11月2日之外,alert中的else会被弹出。当我运行它时,只有第一个日期得到正确验证。循环有问题吗?我该如何解决这个问题?

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

2 个答案:

答案 0 :(得分:1)

所以.. ..你从DB获取所有日期.. ..并且每次都循环遍历它们,为每一行弹出一个JS警告框。

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

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

与回应的交易是否有回报。

..只是一个建议。

答案 1 :(得分:0)

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

如果datepicker的日期为 02-11-2015 ,则该函数将返回 1446422400 ,如果存储在db中的日期为 02-11-2015 < / strong>然后该函数也将返回 1446422400 ,这样您就可以同时处理两个easiyl。

$var1 = strtotime($adateStringValue);

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

然后可以将比较作为if($var1 == $var2)

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