无法在 jquery 和 jtable 中使用 datepicker 更新和创建

Posted

技术标签:

【中文标题】无法在 jquery 和 jtable 中使用 datepicker 更新和创建【英文标题】:can't update and create using datepicker in jquery and jtable 【发布时间】:2016-12-04 21:09:03 【问题描述】:

我遇到了日期字段的问题。当我创建新记录或更新现有记录时,日期字段保存为 000-00-00。

当我选择任何一天时,使用日期选择器,它以值(0000-00-00)存储在表中。

DB 字段是日期类型。

我下载了 php 示例代码,使用示例 sql 创建了一个数据库,并将 RecordDate 字段更改为可编辑,我遇到了同样的问题。

数据库值:0000-00-00 JTable 显示:1899-11-30 我该怎么办??请帮忙这是jquery代码:-

$(document).ready(function () 


   var assignmentid= "<?php echo $assignmentid; ?>";
        //Prepare jTable
        $('#PeopleTableContainer').jtable(
            title: 'Table of people',
            actions: 
                listAction: 'teacherfill.php?action=list&aid="<?php echo $assignmentid; ?>"',
                createAction: 'teacherfill.php?action=create&aid="<?php echo $assignmentid; ?>"',
                updateAction: 'teacherfill.php?action=update&aid="<?php echo $assignmentid; ?>"',
                deleteAction: 'teacherfill.php?action=delete&aid="<?php echo $assignmentid; ?>"'
            ,
            fields: 
                lecture_id: 
                    key: true,
                    create: false,
                    edit: false,
                    list: false
                ,
                lecture_no: 
                    title: 'Lecture No',
                    width: '40%'
                ,
                lecture_date: 
                    title: 'Lecture Date',
                    width: '20%',
                    type:'date'
                

            
        );

        //Load person list from server
        $('#PeopleTableContainer').jtable('load');

    );

PHP 代码:-

if($_GET["action"] == "update" && $_GET["aid"])


$assignmentid=$_GET['aid'];
    $updatedlecno=$_POST["lecture_no"];
    //$updatedlecdate=date("Y-m-d",strtotime($_POST['lecture_date']));
$updatedlecdate=$_POST['lecture_date'];
    $lecid=$_POST["lecture_id"];
    $q="UPDATE lecture_schedule SET lecture_no=$updatedlecno,lecture_date=$updatedlecdate WHERE (lecture_id=$lecid)";
    $result = mysqli_query($conn,$q);
    if($result)
    
        $er="No error";
    
else
    $er1=mysqli_error($conn);
    $er="error";


    //Return result to jTable
    $jTableResult = array();
    $jTableResult['Result'] = "OK";
    //$jTableResult['status'] = $er;
    //$jTableResult['date'] = $updatedlecdate;




    print json_encode($jTableResult);

【问题讨论】:

你的日期选择器的格式是什么? m/d/YY-m-d,可能不正确。 db 接受这种格式 Y-m-d 您需要将其转换为 DateTime$DateTime-&gt;format('Y-m-d') php.net/manual/en/class.datetime.php 【参考方案1】:

像这样,根据我对日期格式的评论。

  $DateTime = new DateTime($_POST['lecture_date']);
  $lecture_date = $DateTime->format('Y-m-d');

您必须将其从 m/d/Y 转换为数据库使用的 Y-m-d (ISO 8601)

【讨论】:

我尝试过更改 php 中的日期格式,就像您建议的格式 'Ymd' 但它仍然不起作用,而且日期选择器具有相同的日期格式。 具体的日期格式相同是什么意思。 你有sql注入的尊崇,你可能需要在查询lecture_date="$updatedlecdate"中引用日期,它毕竟不是整数。但是我会使用 PDO 和占位符 lecture_date=:updatedlecdate 回显查询,在执行更新之前查看值是否符合您的预期,然后在 phpmyadmin 中尝试 如果您看到我的 php 代码中注释的行。 //$updatedlecdate=date("Y-m-d",strtotime($_POST['lecture_date']));我试过这个东西,然后在查询中使用。【参考方案2】:

检查 datepicker 的日期格式,如果格式是“dmY”或“mdY”或“d/m/Y”等,你必须在你的 php 代码中的表单发布后将其更改为“Ymd”格式,然后再插入/更新。

【讨论】:

以上是关于无法在 jquery 和 jtable 中使用 datepicker 更新和创建的主要内容,如果未能解决你的问题,请参考以下文章

如果使用 jtable 事件满足某个条件,则启用 jquery-jtable 隐藏字段

在特定JTable单元上设置焦点和闪烁光标

无法显示 JTable

使用JDBC无法正确查询数据库。

JQuery Jtable 更改添加/编辑按钮的位置

无法通过 Java 应用程序将数据添加到数据库