如何从MySQL数据库中使用AJAX和PHP提取实时用户列表

时间:2011-04-15 16:43:59

标签: php mysql ajax xmlhttprequest

所以我在思考,我有一个简单的cms和管理页面列出了注册到我系统的所有用户,但我想要的是一种实时查看正在创建的用户以及他们对信息所做的任何更新的方法,所以,如果我在管理页面和一个新用户注册或某人更改那里的电子邮件地址,我希望页面显示更改,我不必刷新,我真的不知道从哪里开始,除了我知道我会有使用Ajax刷新信息而不刷新页面。如果有人能给我任何指针或片段,我会非常感激。

谢谢,

3 个答案:

答案 0 :(得分:1)

不确定你在这里找到多少详细信息,但这里是一个高级别的镜头;

<强> check_new_users.php

$timestamp = $_GET['timestamp'];
$array_of_new_users = getNewUsersFromDB($timestamp);
echo json_encode(array('new_users' => $array_of_new_users));

check_new_users.js(假设你有JQuery)

$(document).ready(function () {

  // function to poll the server and get the new users from your script
  var CheckNewUsers = function () {
    var data = {timestamp : new Date().getTime()};
    $.getJSON("path/to/check_new_users.php", data, function (JSON) {
      var new_users = JSON.new_users,
        rowHTML = '';

      // the exact structure here depends on what the array
      // returned from the function getNewUsersFromDB() looks like
      // lets assume it looks like:
      // array(userid => array(info about the user))
      // E.G.
      // array(1 => array(userid => 1, username => "matt"),
      //       2 => array(userid => 2, username => "joe")...

      // process and display the new users onto your page
      for (userid in new_users){
        u = new_users[userid];
        rowHTML = '<tr><td>' + u.userid + '</td><td>' + u.username '</td></tr>'
        $('#user_table').append(rowHTML);
      }
    }
  };

  // and set the function to run every 5 minutes
  setInterval(CheckNewUsers, 300000);  // 300000 milli = 5 minutes

});

如果您想了解我愿意详述的任何细节,请告诉我们。

答案 1 :(得分:0)

根据您使用的CMS,这可能很容易或很难。像Nik说的那样,你需要为客户端站点编写代码,以便按设定的时间间隔轮询服务器端脚本。这应该不会太难,特别是使用像jQuery这样的东西。

在服务器端,您需要知道这些修改是否存储在表中。某些CMS可能会对编辑和新用户创建设置时间戳。如果是这种情况,那么您应该将时间戳传递给AJAX页面以及任何更新。然后在下一个轮询中,包括请求中的最后一个时间戳,并让数据库查询活动,其中TIME&gt; TIMESTAMP。

您可能需要在多个位置编辑CMS以添加此功能,而且在不了解更多详细信息的情况下很难准确说出所需内容。

答案 2 :(得分:0)

希望这会有所帮助,我知道我没有详细说明,但这可能会给你一个路线图。

您可以使用javascript定期轮询服务器(可能每15秒一次)。

它可以向专用于此目的的某个URL发出HTTP请求,例如yoursite.com/poll_for_user_changes。这个网址,而不是提供HTML网页内容,可以简单地发送一个JSON对象(或其他一些数据格式),其中包含您想要了解的任何更改。

当你点击yoursite.com/poll_for_user_changes时,你的服务器将不得不弄清楚数据库中的用户表是否有变化。因此,如果您的javascript会跟踪浏览器上次从服务器收到更新的时间,那将会有所帮助,因此当它要求进行新的更新时,它可以在URL的get字符串中发送(或通过post)last_updated_timestamp of when它上次收到了更新。服务器可以通过构建数据库查询来使用该信息,该数据库查询例如要求用户表中具有创建时间戳> 1的行。 last_updated_timestamp。

一旦您的javascript从服务器收到有关是否有任何更改的数据,您将必须决定如何将此数据合并到网站中以自动显示更改而不刷新。