【问题标题】:AJAX/PHP/MySQL - Detect database changes and alert user?AJAX/PHP/MySQL - 检测数据库更改并提醒用户?
【发布时间】:2018-03-31 01:07:27
【问题描述】:

Jquery:

    $.ajax({
        type: "GET",
        dataType: 'html',
        url: "order",
        timeout: 30000,
        cache: true,
        success: function(data, status, xhr) {
    $('#changes').append(data);
alert("x amount of changes have been updated");
        },
        error: function(xhr, ajaxOptions, thrownError) {
          alert(xhr.status);
          alert(thrownError);
        }
      });

PHP:

$stmt = $db->prepare("SELECT * FROM `orders` WHERE `date` > NOW()");
//Other MySQL stuff

基本上我不知道该怎么做,但我想在每次有新订单时提醒用户,但我将如何在 PHP 端提醒用户发生了变化?

我的大脑今天不工作了,我需要检测有多少订单,然后将新订单附加到表中(而不是旧订单)

我可以从我的 order.php 页面解析 json 但不显示它而只显示 HTML 吗?

我真的希望有人可以帮助我!

【问题讨论】:

  • 如果您想在每次数据库更改时通知用户,您需要谷歌:web sockets,不幸的是,它不是php 的最强资产,使用它可能会更容易NodeJs
  • 用PHP可以做到,我就是想不通
  • 我没有看到任何投票,你只调用一次。 @Taki php 能够很好地运行 websocket 服务器,节点只有一个简单的 api。但它不是唯一的选择,可以做服务器发送事件
  • 我会在 order.php 端写什么代码来存储发生的变化,可能是 JSON 格式以供读取
  • 好吧,您可以对自创建以来已更新的任何文件运行 cron 作业,并根据已完成的查询或之后的任何日子进行记录,这似乎是一种方法。这可能有点矫枉过正,但这是一种可能的方式。

标签: javascript php jquery mysql ajax


【解决方案1】:

是的,您可以从 PHP 发送和接收 JSON。以下来自生产系统,但我从中删除了很多代码,只是为了向您展示重要的东西。您将需要添加错误检查逻辑等(代码可能有语法错误(错别字),但正如我所说,是功能性的):

<script>
function checkForNew() {
var POSTData='CMD=getNewInvoices&'; /* Your PHP script can handle different requests */
POSTData=POSTData + 'myData=' + pseudoSave;
$.ajax( {
    type: 'POST',
    url: './checkForNewInvoices.php',
    data: POSTData,
    async: false,
    error: function(data) {
      retData=data;
      // Do error stuff
    },
    success: function(data) {
      retData=data;
      retJ=JSON.parse(retData);
      // Check here if valid JSON
    }
});
setTimeout(function() { checkForNew(); }, 5000);
}

$(document).ready(function() {
  checkForNew();
});

</script>

<?php {checkForNewInvoices.php}
  ... 
  ...
  echo json_encode($myJsonData); /* If data is in an array */
?>

这是我要做的(逻辑/思考{警告可能有缺陷:-)}):

  1. 当我保存订单(更新/插入)时,我会用整数或“标志(真/假)”更新文本文件(或数据库字段)。
  2. 我的网站在加载时会从标记的计数和状态开始,检查没有已处理标记的订单并保留加载状态的本地“标签”。
  3. 然后我将检查标志/int 是否已更改(没有状态标志的订单)。如果它已更改或有没有“已显示/已处理”状态的订单,那么我知道有新订单/发票,然后我将发送服务器查询 (ajax) 以检索订单或计数等。

担心/情况:

  1. 如果订单来自世界各地,并且有很多人(多对多)访问网站。
  2. 订单来自很多人,但只有一个人在加载监控站点(多对一)。
  3. 订单站点是一处,监控站点是一处(一对一 - 简单)。

相信这会有所帮助。

复活节快乐!

【讨论】:

    猜你喜欢
    • 2010-11-14
    • 2013-01-28
    • 2013-01-22
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    相关资源
    最近更新 更多