Php 在数据库更新时通过Jquery Ajax跟踪和管理内容

Php 在数据库更新时通过Jquery Ajax跟踪和管理内容,php,javascript,jquery,mysql,ajax,Php,Javascript,Jquery,Mysql,Ajax,我通过jQueryAjax查询数据库以检索内容,并使用SetInterval函数每隔1分钟查询数据库中的新内容。 我的问题是如何跟踪新内容?例如:若数据库有新内容,我想给它添加highlight类。如何做到这一点 用于检索内容的Jquery代码 $(document).ready(hot_listings()); setInterval( "hot_listings();", 10000 ); var ajax_load = "<img class='loadin

我通过jQueryAjax查询数据库以检索内容,并使用SetInterval函数每隔1分钟查询数据库中的新内容。 我的问题是如何跟踪新内容?例如:若数据库有新内容,我想给它添加highlight类。如何做到这一点

用于检索内容的Jquery代码

    $(document).ready(hot_listings());
    setInterval( "hot_listings();", 10000 );

    var ajax_load = "<img class='loading' src='images/indicator.gif' alt='loading...' />";
    function hot_listings() {
            $.ajax({
                url: "hot_listing.php",
                cache: false,
                success: function(msg) {
                   $("#hot_properties").html(msg);
                }
           });
    }
$(document).ready(hot_listings());
setInterval(“hot_listings();”,10000);
var ajax_load=“”;
函数hot_listings(){
$.ajax({
url:“hot_listing.php”,
cache:false,
成功:功能(msg){
$(“#热#属性”).html(msg);
}
});
}
嗯,我也包括Php

    <?php
    include("includes/initialize.php"); 
    // hot properties, featured
        $per_page = 3;
        global $database;
        $listings = Listings::hot_listings();
        //while ($listing = $database->fetch_array($listings)) {
         foreach ($listings as $listing ) {
            $listing_id         = $listing->listing_id; //initialize listing_id to fetch datas from other table
            $photo              = Photos::find_by_id($listing_id); //initialize table photo
            $comment            = Comments::find_by_id($listing_id);
            $comment_count      = Comments::count_by_id($listing_id);
            $photo_count        = Photos::count_by_id($listing_id);

            //echo $listing['listing_id'];

     ?>

    <li><span class="imageholder">
        <a href="content.php?id=<?php echo $listing->listing_id; ?>"><img class="listingimageSmall" src="<?php if (!empty($photo->name)) { echo 'uploads/thumbs/'.$photo->name; } else { echo 'images/no-thumb-100.jpg'; } ?>" width="66" height="66" ></a>
    </span>
        <h3><a href="content.php?id=<?php echo $listing->listing_id; ?>"><?php echo ucfirst($listing->title) . ' in ' . ucfirst($listing->city) ; ?></a></h3>
        <p class="description">
        <span class="price">Rs <?php echo $listing->price;  ?></span> 

        <span class="media"> <img src="images/icon_img.jpg" alt="Images" width="13" height="12" /> <?php echo $photo_count;?> Images  &nbsp;<img src="images/comments.png" alt="Images" width="13" height="12" />  <?php echo $comment_count; ?> comments &nbsp;</span>
        </p>
    <div class="clear">&nbsp;</div>
     </li>
    <?php } // end of foreach

    ?>

  • Rs 图片评论


  • 您可以将所有列表放在JS中的一个数组中,然后将其与从PHP文件中新获取的列表进行比较,或者只需检查包含添加行日期的日期列,然后通过PHP;如果行早于1分钟-继续,在HTML元素上放置一个类。

    您可以将所有列表放在JS中的数组中,然后将其与从PHP文件中新获取的列表进行比较,或者您可以简单地检查包含添加行的日期的日期列,然后通过PHP;如果行早于1分钟-继续并在HTML元素上放置一个类。

    回答 我建议您将PHP部分更改为发出关于清单的JSON数据

    这可以通过使用PHP函数
    json\u encode()
    实现。您可以在上阅读更多关于
    json\u encode()
    的信息

    然后在客户端上,您可以执行以下操作:

    $.ajax({
         url: "hot_listing.php",
         cache: false,
         success: function(data) {
           last_received_listings = data;
           build_html_in('#hot_properties', data);
         }
    });
    
    在ajax回调中,您记住刚刚接收到的数据,然后从中构建HTML标记

    因为您知道您已经看到了哪些列表,所以当您获得新列表时,您将能够识别新的列表

           var new_listings = detect_new_listings(data, last_received_listings);
           last_received_listings = data;
           build_html_in('#hot_properties');
    
           highlight_listings(new_listings); // set a CSS class on a div or whatever
    
    更多细节
    检测新列表的可能实现

    function detect_new_listings(original, new) {
      var result = [];
      for(var i = 0; i < original.length; i++) {
        var found = false;
    
        // find similar listing in new
        for(var j = 0; j < new.length; j++) {
          if(original[i].listing_id == new[j].listing_id) {
            found = true;
            break;
          }
        }
    
        if(!found) {
          result.push(original[i]);
        }
      }
      return result;
    }
    
    功能检测新列表(原始、新){
    var结果=[];
    对于(变量i=0;i
    答案 我建议您将PHP部分更改为发出关于清单的JSON数据

    这可以通过使用PHP函数
    json\u encode()
    实现。您可以在上阅读更多关于
    json\u encode()
    的信息

    然后在客户端上,您可以执行以下操作:

    $.ajax({
         url: "hot_listing.php",
         cache: false,
         success: function(data) {
           last_received_listings = data;
           build_html_in('#hot_properties', data);
         }
    });
    
    在ajax回调中,您记住刚刚接收到的数据,然后从中构建HTML标记

    因为您知道您已经看到了哪些列表,所以当您获得新列表时,您将能够识别新的列表

           var new_listings = detect_new_listings(data, last_received_listings);
           last_received_listings = data;
           build_html_in('#hot_properties');
    
           highlight_listings(new_listings); // set a CSS class on a div or whatever
    
    更多细节
    检测新列表的可能实现

    function detect_new_listings(original, new) {
      var result = [];
      for(var i = 0; i < original.length; i++) {
        var found = false;
    
        // find similar listing in new
        for(var j = 0; j < new.length; j++) {
          if(original[i].listing_id == new[j].listing_id) {
            found = true;
            break;
          }
        }
    
        if(!found) {
          result.push(original[i]);
        }
      }
      return result;
    }
    
    功能检测新列表(原始、新){
    var结果=[];
    对于(变量i=0;i
    !tats有很好的文档记录,非常有用。。荣誉:)!tats有很好的文档记录,非常有用。。荣誉:)