【问题标题】:Database date and jquery date validation数据库日期和 jquery 日期验证
【发布时间】: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;
            }
        }
    }
?>

【问题讨论】:

    标签: javascript php jquery mysql datepicker


    【解决方案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 日这个日期。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多