使用 datepicker jquery ajax php 更新 mysql 数据库字段

Posted

技术标签:

【中文标题】使用 datepicker jquery ajax php 更新 mysql 数据库字段【英文标题】:Update mysql database fields with datepicker jquery ajax php 【发布时间】:2015-02-20 22:00:09 【问题描述】:
    如何更新 mysql 字段而不刷新页面,从数据库的结果列表中。 使用 日期选择器 在单个 .php 页面中?

例子:

order_report.php

$query = $this->db->query("select order_id,
date_format(date_payed,'%d-%m-%Y') as date_payed,
from oc_order");

***code left out to save space***

foreach ($res as $orders) 
print $orders['order_id'];

<input type="text" name="datepicker" id="datepicker" value="<?php echo $orders['date_payed']; ?>"/>
$query = $this->db->query("update oc_order SET date_payed='$datepicker' WHERE  order_id='$orders['order_id'];'");

jQuery

<script>
$(document).ready(function() 
$("#datepicker").datepicker(
    dateFormat: 'yy-mm-dd'
    );
)
</script>

【问题讨论】:

这是关于服务器/客户端通信的常见误解。 PHP 在服务器端。 javascript (datepicker) 在客户端。您显然需要一个 AJAX 调用来更新您的数据库。但没有银弹。有人可以给你写代码,这样你就可以复制/粘贴并让它工作,但下次会发生什么?让谷歌去看看人们如何使用 php 和 AJAX。我保证这将是值得的。如果您遇到困难,请回到 SO 并提出一个具体问题。亲切的问候。 我已经尝试了 3 天来完成这项工作。最大的问题是日期选择器在 foreach 数组中时不会加载。 html 和 PHP 表单提交的基础知识以及 PHP 的解析方式开始。您的 php 代码示例没有任何意义。 当然不会加载。您正在为每个 datepicker 实例输出 SAME dom id=...。 dom ID必须在整个文档中是唯一的。 所以在 php 方面... 【参考方案1】:

我假设您要问的是您希望 datepicker 在您选择日期时更新您的 mysql 表,而无需刷新该页面。您提供的代码有点混乱,但我整理了一些可能会有所帮助的内容。

我猜您代码中的 input 字段实际上应该是您获取值的 html。

至于将所有内容保存在一个页面上...我认为这是不可能的。为获得最佳结果,您必须创建一个新的.php 页面来接受日期选择器的值,该值通过$.ajax 调用传递,其中显示date。如果您在同一页面上执行此操作,您最终可能会通过 success 函数中的 data 参数返回大量不需要的 html 数据,但它很可能会引发错误并获得error函数回调。

在这个例子中,我调用了 php 页面process_date.php

HTML:

<input type="text" id="datepicker" value="<?php echo $orders['date_payed']; ?>"/>

JS:

<script type="text/javascript">
    $(document).ready(function () 
        $("#datepicker").datepicker(
            dateFormat: "yy-mm-dd",
            onSelect: function () 
                var date = $("#datepicker").val();

                $.ajax(
                     type: "POST", //or GET. Whichever floats your boat.
                     url: "path/to/process_page.php",
                     data:  date: date ,
                     success: function(data) 
                         alert(data);

                         //Write code here for you successful update (if you want to)
                     ,
                     error: function() 
                         alert("Error.");
                     
                );
            
        );
    );
</script>

PHP (process_date.php)

<?php

    $date = $_POST['date'];  //if you used GET in your ajax, then use $_GET here instead


    $query = $this->db->query("select * from oc_order");

    ***code left out to save space***

    foreach ($products as $orders) 
        print $orders['order_id'];

        $query = $this->db->query("update oc_order SET date_payed='$date' WHERE  order_id='$orders['order_id'];'");

        echo "Success";
    
?>

注意:并不是说你没有,但不要忘记在将 PHP 数据发送到服务器之前始终对其进行清理,以避免受到 SQL Injection 的攻击。即使您使用参数化查询,它仍然是一个好主意。

【讨论】:

对不起,我的问题有点混乱。我有一张包含商店所有订单的表格,在最后一列中,我想从 datepicker 中选择一个日期并将该行更新到数据库中

以上是关于使用 datepicker jquery ajax php 更新 mysql 数据库字段的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI DatePicker 没有出现在通过 Ajax 加载的 Bootbox 模式中

jQuery ajax 提交表单并从 datepicker、按钮获取值

jquery datepicker ms ajax updatepanel在回发后不起作用

当我在 ajax 中传递 jquery datepicker 日期时,php 发现索引错误

在 jQuery UI datepicker 中仅选择特定日期(日期列表来自 AJAX)

如何激活由 ajax datepicker 事件生成的选项卡小部件内返回的 jquery 对话框?