Atualizar a página toda vez que alterar dados numa determinada tabela do BD

2,063 views
Skip to first unread message

Juscelino Barão

unread,
Dec 3, 2008, 10:12:23 AM12/3/08
to AJAX-BRASIL
Pessoal,
desculpa a pergunta um tanto primária, mas vamos lá...

Gostaria de saber se existe a possibilidade de toda vez que inserir/
alterar dados em uma tabela no BD, atualizar automaticamente a página
que mostra esses dados.

Qual caminho trilhar?
Aceito sugestões de links, pois a minha pesquisa no Google não foi
muito eficiente.

Atenciosamente

Juscelino Barão





Keitty Suélen

unread,
Dec 3, 2008, 11:12:11 AM12/3/08
to ajax-...@googlegroups.com
Já faz um tempo que pesquiso como atualizar a página somente se houver atualização no BD, porém, não tive sucesso. O máximo que consegui encontrar foi um tal de AJAX Reverso mas na época nao cumpria o que prometia

Você pode atualizar a página automaticamente num intervalo de tempo determinado usando a função javascript settimeout() para chamar a função ajax correspondente ao carregamento da página e para só atualizar qndo houver alteração no banco faça o seguinte:
Guarde o objeto (ou o recordset, ou array) com os dados que esta mostrando na tela e compare com o novo resultado vindo do banco se for diferente recarega a página.



2008/12/3 Juscelino Barão <jusceli...@gmail.com>



--
Keitty Suélen
-----------------------------------------------

Anderson Aguiar

unread,
Dec 3, 2008, 11:17:10 AM12/3/08
to ajax-...@googlegroups.com
Keitty ele falou que queria isso usando AJAX? oO

2008/12/3 Keitty Suélen <ksam...@gmail.com>



--
----------------------------------------
Att Anderson Aguiar
Cel: 8811-0465
Site: www.revsoft.info
E-mail: revs...@gmail.com


Willians de Paula

unread,
Dec 3, 2008, 11:27:57 AM12/3/08
to ajax-...@googlegroups.com
Bom pra resolver isso com AJAX, você poderia ficar fazendo requisições de tempo em tempo pra saber se os dados foram atualizados, é claro que existem formas diferentes de você saber se os dados foram atualizados em tempo real.

Enfrentei esse problema um dia desses precisava da atualização dos dados em tempo real, porém como era uma requisição rápida eu consegui fazer de 1 em 1 segundo, utilizei a biblioteca prototype com a função Ajax.PeriodicalUpdater.

Essa função faz atualização da sua requisição de tempo em tempo, setado por você.
Exemplo:

Ajax.PeriodicalUpdater

Sabe aquela situação chata onde você tem que criar uma situação onde de 10 em 10 segundos tem que requisitar algumas informações para atualizar determinado lugar ?

Então, Ajax.PeriodicalUpdater nele:

new Ajax.PeriodicalUpdater('products', 'exemplo.php',
{
method:'post',
insertion: Insertion.Top,
frequency: 2,
decay: 2

});

<div id="products"></div>

Para um teste a página exemplo.php poderia ser assim:

<?php

echo date('H:i:s');

?>

A hora irá atualizar de 2 em 2 segundos

Frequência ? hmm tempo em segundos que ocorrerá as requisições, Decay ? Decay ? eita, decay é o tempo também em segundos que será multiplicado pela frequencia caso já esteja acontecendo uma requisição para não sobrecarregar o servidor.


Exemplo foi tirado desse site http://nodesign.wordpress.com/2007/11/14/ajax-facil-e-eficiente-com-prototype/

Ah, um lembrete pra vc não passar o que eu passei, com o IE essa função não funciona se vc passar a requisição por método 'get', solução para isso utilize método 'post', funcionará nele e nos demais navegadores, é porque me parece que o IE tem um problema de cache

Me ajudou bastante esse site pra entender como funcionava a biblioteca prototype, pode ser útil pra você tb.


2008/12/3 Anderson Aguiar <revs...@gmail.com>



--
Atenciosamente,
Willians de Paula Pereira

diogo....@gmail.com

unread,
Dec 9, 2008, 6:45:50 AM12/9/08
to AJAX-BRASIL
Para solucionar o problema do cache com request do tipo GET, basta
adicionar na URL uma variavel com um numero randomico ... por exemplo:

var randomNumber = Math.floor((Math.random() * 101));

new Ajax.PeriodicalUpdater('products', 'exemplo.php?rand=' +
randomNumber,
{
method:'get',
insertion: Insertion.Top,
*frequency: 2 ...

Sempre que preciso lidar com problemas de cache no ie, uso essa
solução.

Espero ter ajudado.
Abs.

On 3 dez, 14:27, "Willians de Paula" <williansdepa...@gmail.com>
wrote:
> Bom pra resolver isso com AJAX, você poderia ficar fazendo requisições de
> tempo em tempo pra saber se os dados foram atualizados, é claro que existem
> formas diferentes de você saber se os dados foram atualizados em tempo real.
>
> Enfrentei esse problema um dia desses precisava da atualização dos dados em
> tempo real, porém como era uma requisição rápida eu consegui fazer de 1 em 1
> segundo, utilizei a biblioteca prototype com a função *
> Ajax.PeriodicalUpdater.*
>
> Essa função faz atualização da sua requisição de tempo em tempo, setado por
> você.
> Exemplo:
>
> *Ajax.PeriodicalUpdater*
>
> Sabe aquela situação chata onde você tem que criar uma situação onde de 10
> em 10 segundos tem que requisitar algumas informações para atualizar
> determinado lugar ?
>
> Então, Ajax.PeriodicalUpdater nele:
>
> new Ajax.PeriodicalUpdater('products', 'exemplo.php',
> {
> method:'post',
> insertion: Insertion.Top,
> *frequency: 2,
> decay: 2*
>
> });
>
> <div id="products"></div>
>
> Para um teste a página exemplo.php poderia ser assim:
>
> <?php
>
> echo date('H:i:s');
>
> ?>
>
> A hora irá atualizar de 2 em 2 segundos
>
> Frequência ? hmm tempo em segundos que ocorrerá as requisições, Decay ?
> Decay ? eita, decay é o tempo também em segundos que será multiplicado pela
> frequencia caso já esteja acontecendo uma requisição para não sobrecarregar
> o servidor.
>
> Exemplo foi tirado desse sitehttp://nodesign.wordpress.com/2007/11/14/ajax-facil-e-eficiente-com-p...
>
> Ah, um lembrete pra vc não passar o que eu passei, com o IE essa função não
> funciona se vc passar a requisição por método 'get', solução para isso
> utilize método 'post', funcionará nele e nos demais navegadores, é porque me
> parece que o IE tem um problema de cache
>
> Me ajudou bastante esse site pra entender como funcionava a biblioteca
> prototype, pode ser útil pra você tb.
>
> 2008/12/3 Anderson Aguiar <revsof...@gmail.com>
>
>
>
> > Keitty ele falou que queria isso usando AJAX? oO
>
> > 2008/12/3 Keitty Suélen <ksama...@gmail.com>
>
> >> Já faz um tempo que pesquiso como atualizar a página somente se houver
> >> atualização no BD, porém, não tive sucesso. O máximo que consegui encontrar
> >> foi um tal de AJAX Reverso mas na época nao cumpria o que prometia
>
> >> Você pode atualizar a página automaticamente num intervalo de tempo
> >> determinado usando a função javascript settimeout() para chamar a função
> >> ajax correspondente ao carregamento da página e para só atualizar qndo
> >> houver alteração no banco faça o seguinte:
> >> Guarde o objeto (ou o recordset, ou array) com os dados que esta mostrando
> >> na tela e compare com o novo resultado vindo do banco se for diferente
> >> recarega a página.
>
> >> 2008/12/3 Juscelino Barão <juscelinoba...@gmail.com>
>
> >>> Pessoal,
> >>> desculpa a pergunta um tanto primária, mas vamos lá...
>
> >>> Gostaria de saber se existe a possibilidade de toda vez que inserir/
> >>> alterar dados em uma tabela no BD, atualizar automaticamente a página
> >>> que mostra esses dados.
>
> >>> Qual caminho trilhar?
> >>> Aceito sugestões de links, pois a minha pesquisa no Google não foi
> >>> muito eficiente.
>
> >>> Atenciosamente
>
> >>> Juscelino Barão
>
> >> --
> >> Keitty Suélen
> >> -----------------------------------------------
>
> > --
> > ----------------------------------------
> > Att Anderson Aguiar
> > Cel: 8811-0465
> > Site:www.revsoft.info
> > E-mail: revsof...@gmail.com
Reply all
Reply to author
Forward
0 new messages