使用 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 数据库字段的主要内容,如果未能解决你的问题,请参考以下文章