Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RMARLLEY

Criar um contador em tempo real usando php, js e banco.

Recommended Posts

Gostaria de criar um contador em tempo real que conta a quatidade de clientes inseridos na base e me dê a resposta sem precisar da refresh na página...

 

tipo o contador do gmail do google www.gmail.com

 

eu faço:

CODE
select count(*) from clientes

e vai atualizando na página sempre que aparecer mais um no banco, sem precisar o cliente dá refresh!

 

vlw galera... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta da setar um tempo pra da refresh automaticamente ueh! =]

 

header("location: pagina.php",3); // 3 eh o tempo antes de dar o refresh nesse caso 3 segundos

 

OBS: Nao ponha um tempo mt baixo se nao vai dar refresh toda hora e nao dara tempo de carregar a pagina

OBS nº 2: voce acha que aquilo do gmail eh verdade???Observe k ele varia a um numero de 38 ou 39 =P

 

Creio que de pra fazer por ajax tbm...nao sei pq nao intendo mt mais axo k da sim

Compartilhar este post


Link para o post
Compartilhar em outros sites

batatinha.... essa não é uma boa solução

 

1º se a pessoa tiver digitando algo num formulário vai perde todos os seus dados.

2º que vai dar refresh na página toda

3º que existe o AJAX

 

Cara você tem que pesquisar um pouco sobre o ajax.

 

você vai ter que usar o função AJAX que traga a resposta e ela sempre vai ficar exutando usando a função setInterval do javascript

 

você colocar setInterval(funcaoChamaAjax(), 2000); // 2000 = 2 segundos = 2000 milisegundos

 

essa função que chama o AJAX coloca a resposta do AJAX dentro da Div ou elemento com determinado id="id-do-elemento" usando o innerHTML do javascript.

 

Acho que com isso você consegue o resto. Eu só não posso posta o código todo aqui!

 

 

Valeus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Migão, vamos lá...

 

Vou te mostrar uma estruta básica, mas funcional... !

 

Arquivo onde será exibido o número de usuários online.

 

include_online.php

 

<html>

<head>

<script src="ajaxInit.js" type="text/javascript"></script>

<script src="usersCount.js" type="text/javascript"></script>

</head>

<body onload="contaUsuarios('usuariosOnline');">

<div>

<span id="usuariosOnline"></span> <span>usuários online!</span>

</div>

</body>

</html>

 

Arquivo usersCount.js

 

function contaUsuarios(spanID) {

var usersCountTmpVar = document.getElementById(spanID);

 

if(!usersCountTmpVar) {

alert("Campo não encontrado");

return; //se ele não encontrar o campo, da um alerta e escapa a funcao

}

var ajaxUC = ajaxInit(); //inicia a variavel ajax para uso e UserCount

ajaxUC.open("GET", "usersCount.php", true);

ajaxUC.onreadystatechange = function() { //funcao executada ao trocar de stado

if(ajaxUC.readyState == 4) { //verifica se o estado atual é "concluido"

if(ajaxUC.status == 200) { //verifica se o arquivo foi lido corretamente

usersCountTmpVar.innerHTML = ajaxUC.responseText + ""; //define o texto do span

}

setTimeout("contaUsuarios('" + spanID + "')", 2000); //reexecutar a funcao apos 2 segundos

}

}

ajaxUC.send(null); //enviar dados para poder receber resposta

}

 

Arquivo usersCount.php

 

<?php

$gmtDate = gmdate("D, d M Y H:i:s");

header("Expires: {$gmtDate} GMT");

header("Last-Modified: {$gmtDate} GMT");

header("Cache-Control: no-cache, must-revalidate");

header("Pragma: no-cache");

$timeExpire = 30; //tempo em segundos para expirar usuario

$fileName = "online.txt"; //nome do arquivo a ser usado

if(!file_exists($fileName)) {

$f = fopen($fileName, "w");

fclose($f);

}

$ip = $_SERVER['REMOTE_ADDR']; //pegar ip do usuario

$tempo = time(); //pegar o timespan

$stringUser = $ip . ":" . $tempo; //concatenamos usando o caractere : como divisor

$onlineNow = file_get_contents($fileName); //arquivo txt com dados de usuarios atuais

$arrayNow = explode("|", $onlineNow); //o divisor usado para separar valores é |

$newUsers = array(); //essa array irá gravar os usuarios ainda online

//agora vamos filtrar os usuarios com timespan vencido

foreach($arrayNow as $an) {

list($tIP, $tTime) = explode(":", $an); //separamos usando o separador previamente definido

if($tIP != NULL && $tTime != NULL && $tIP != $ip && $tTime > $tempo - $timeExpire) {

$newUsers[] = $tIP . ":" . $tTime; //caso o usuario passe no teste, ele é adicionado

}

}

$newUsers[] = $stringUser; //adicionando o usuario atual

file_put_contents($fileName, implode("|", $newUsers)); //atualiza o arquivo

echo count($newUsers); //escreve a quantidade de usuarios atual

?>

 

Arquivo ajaxInit.js

 

function ajaxInit() {

var req;

 

try {

req = new ActiveXObject("Microsoft.XMLHTTP");

} catch(e) {

try {

req = new ActiveXObject("Msxml2.XMLHTTP");

} catch(ex) {

try {

req = new XMLHttpRequest();

} catch(exc) {

alert("Esse browser não tem recursos para uso do Ajax");

req = null;

}

}

}

return req;

}

 

e por último, crie um arquivo de texto, e cole o seguinte código 127.0.0.1:1151875739 depois salve com o nome de online.txt

 

Nesta forma, todos os arquivos deveram estar na mesma pasta.

 

Esse script é para o php5.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

WOW! Vou dar uma olhada nesse código sedex, naum tive tempo de testar mas prometo que vou tentar, naum conheco muito ajax, mas vou tentar...

 

será que vou conseguir puxar as informações do banco??

 

prometo que tento...

 

vlws!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.