增加一个int,但同时有多个用户

时间:2019-02-16 20:10:23

标签: javascript php

我正在设置一个小网站,用来计算进入房间的人数。如果有人进入房间,经理将单击“ +”按钮,将值加1。也可以使用“-”按钮。我已经使用JQuery完成了此操作,但它仅对网站上有1位活跃用户有效。我想知道如何同时针对多个用户进行调整,如果至少可能的话...所有用户应该可以实时访问该数字,也许PHP可以解决此问题?

$(document).ready(function(){

var compteur = 0;
const min = 0;
const max = 1200;

$("#resultat").attr('value', compteur);

$('#increase').click(function(){
  if(compteur < max){
    ++compteur;
    $("#resultat").attr('value', compteur);
  }

  if(compteur > max){
    alert("Nombre maximum de personnes atteint !");
  }
});

$('#decrease').click(function(){
  if(compteur > 0){
    --compteur;
    $("#resultat").attr('value', compteur);
  }

  if(compteur < min){
    alert('Impossible de descendre en dessous de 0 personne');
  }
});
});

2 个答案:

答案 0 :(得分:0)

是的,您确实需要服务器端语言(PHP或您喜欢的任何语言)以及javascript代码段。为此,您需要将活动用户的数量存储在服务器上的某个位置。也许是数据库,或者如果只是要统计用户数,则可以将其存储在文件中(这将要求您实施锁定文件,以便没有两个用户读取相同的值并进行更改)。

在PHP中,您将执行以下操作:

更新的代码,以防止数据争用。

创建一个文件counter.php;将其放在您的html文件旁边。代码将如下所示:

<?php
// counter.php

// Increment
if (isset($_POST['increment']))
{
    // Increment in your database
    // UPDATE online_users SET users = users + 1
}

// Decrement
else if (isset($_POST['decrement']))
{
    // Decrement in your database
    // UPDATE online_users SET users = users - 1
}

else if (isset($_GET['onlineusers']))
{
    // Read from your database and output
    // SELECT users FROM online_users
}

?>

然后在您的jQuery代码中,您可以简单地对此文件发出POST请求,以增加或减少文件中的用户数。

增量:

jQuery.post("counter.php?increment");

减量:

jQuery.post("counter.php?decrement");

要获取当前活动的用户:

jQuery.get("counter.php?onlineusers", function(numusers) {
    compteur = numusers;
    $("#resultat").attr('value', compteur);
});

注意:在递增或递减之前,请确保还检查counter.php文件中的MAX和MIN用户条件!我没有这么做:P

答案 1 :(得分:0)

由于该项目包括实时交互,因此您可能对escaped(asASCII:)感兴趣,该语言易于使用,并且包含客户端库(在您的情况下要在浏览器中使用)和服务器库(可以在以下情况下使用) Node.js,但也有其他语言的非官方实现,例如Python);

或者,如果您想要更轻巧的东西,则可以使用WebSockets(在socket.io中也可以使用它作为传输工具),在这种情况下,您可以引用init(_:radix:uppercase:)-在这种情况下,服务器可以用多种语言编写,这些语言具有WebSockets服务器的库(例如,Node.js的socket.io)。您提到了PHP,尽管那样做可能会更困难,但在这种情况下这也是可行的解决方案。如果仍然决定使用PHP进行操作,则可以在客户端使用我上面提到的JS WebSocket,在PHP服务器中使用WebSocket docs