Php 如果用户登录,每个帖子的AJAX唯一ID div颜色更改

Php 如果用户登录,每个帖子的AJAX唯一ID div颜色更改,php,jquery,ajax,Php,Jquery,Ajax,有许多帖子是由用户制作的,我希望每个帖子或div在这种情况下显示背景色绿色或灰色,这取决于用户是否登录状态。 我试图实现的是,当页面处于空闲状态时,您应该可以看到用户在不刷新页面的情况下在线 status.php 主页 这段代码更改了所有div的背景色,但我希望它只针对与登录到帖子创建者的用户相对应的div。 不知道如何使用ajax使div具有动态样式 非常感谢您的帮助 您可以使用数据库中的id用户来实现这一点。然后将一个id添加到与用户id对应的div中。例如: Ajax请求成功: 在HTML

有许多帖子是由用户制作的,我希望每个帖子或div在这种情况下显示背景色绿色或灰色,这取决于用户是否登录状态。 我试图实现的是,当页面处于空闲状态时,您应该可以看到用户在不刷新页面的情况下在线

status.php

主页

这段代码更改了所有div的背景色,但我希望它只针对与登录到帖子创建者的用户相对应的div。 不知道如何使用ajax使div具有动态样式


非常感谢您的帮助

您可以使用数据库中的id用户来实现这一点。然后将一个id添加到与用户id对应的div中。例如:

Ajax请求成功:

在HTML中:


为此,您需要在HTML中具有唯一标识该用户的内容。您应该将user_id传递给status.php,并分别为每个项目发送此请求。向我们展示帖子的HTML代码。还有,为什么您要在5秒钟的时间间隔内为每个用户声明相同的ajax函数??这是非常多余的,根本没有必要。让AJAX脱离PHP。让它调用5秒钟,将所有用户ID返回到联机状态。将所有用户ID的颜色改为绿色,其余的可以是灰色。你能在回答中告诉我你的意思吗?我可以投票作为答案,那样的话,dataId会是什么?我尝试了var-dataId=;但它没有工作,我仍然无法让所有用户显示灰色div脱机状态。你能帮我吗?当用户登录时,一切都很好,它会变成绿色。当用户注销时,它不会变为灰色,除非我刷新非实时页面。另外,我注意到如果我在一个浏览器上使用一个用户登录,在另一个浏览器上使用另一个用户登录,只有最新的用户才会进入ajax,并且只有该用户的帖子是绿色的,而不是两个用户的帖子。在我的代码示例中,我不重新添加setInterval,它允许您在问题代码之后每隔5秒刷新ajax请求。否则你的问题可能在另一个地方。例如,您的登录功能。我还看到您的请求只返回一个用户限制1。最后,如果您可以将mysql_*函数更改为mysqli_*函数,因为自PHP 5.5以来,这些函数已被弃用。我意识到这一限制并删除了它,但它似乎仍然只接受最后一个登录的用户,而不是将用户id添加到数组中,同时保留旧的用户id。我还有5秒的函数,所以这很好
if (logged_in() === true){  
    $res8 = mysql_query("SELECT * FROM `users` WHERE status=1 LIMIT 1");
    if(mysql_num_rows($res8) > 0){
        while($row8 = mysql_fetch_assoc($res8)){
            if ($row8['status'] === "1") {                  
                echo "online";
            }
        }
    }   
}else {
    echo "offline";
}
 $res8 = mysql_query("SELECT * FROM `users` WHERE user_id='".$user_id."' LIMIT 1");
    if(mysql_num_rows($res8) > 0){
        while($row8 = mysql_fetch_assoc($res8)){
        ?>
        <script type="text/javascript"> 
            $(document).ready(function() {
                setInterval(function(){
                    $.ajax({
                      url: 'status.php',
                      datatype:"application/json",
                      type: 'GET',
                      success: function(data) {
                        if (data === "online") {
                        $('.status').css({background: '#40A547'});  
                        } else { 
                        $('.status').css({background: '#7f8c8d'});
                        }
                      }
                    });
                }, 5000);
               });
            </script>
    <?php                       
            }
        }
    }
    echo '<div class="status">TEST</div></a></div>';
$('.status #user'+ dataId).css({background: '#7f8c8d'});
echo '<div class="status" id="user1">TEST</div></a></div>';
$.ajax({
   url: 'status.php',
   dataType: "json",
   type: 'GET',
   success: function(data) {
       if (data.message === "online")
       {
           $('.status #user'+ data.userId).css({background: '#40A547'});  
       } else // data.message === "offline"
       { 
           $('.status #user'+ data.userId).css({background: '#7f8c8d'});
       }
   }
});
//...
// HTML looks like...
echo '<div class="status" id="user1">TEST</div></a></div>';
echo '<div class="status" id="user2">TEST2</div></a></div>';
<?php
header('Content-Type: application/json'); // So add this
//...
$array = array(); // New variable which would be return as json

if (logged_in() === true) // Your online part
{
    $res8 = mysql_query("SELECT * FROM `users` WHERE status=1 LIMIT 1");
    if(mysql_num_rows($res8) > 0){
        while($row8 = mysql_fetch_assoc($res8)){
            if ($row8['status'] === "1") {                  
                $array['message'] = 'online';
                $array['userId'] = $row8['user_id']; // Here is the userId (adapt following your code)
            }
        }
    }
}// Your offline part
else {
    $array['message'] = 'offline';
}

echo json_encode($array);