Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Aviso tabela mysql alterada.


dudu_linux

Pergunta

Bom dia!

Como perceberam sou novato no fórum e tb em programação.

Tenho um sistema de estatísticas. Esse sistema está escrito em php e uso Mysql como bd. O sistema é dividido em 2 partes: uma de inserção de dados e uma de consulta/visualização. Está td funcionando certinho, mas quero dar uma encrementada hehehe.

Imagine a seguinte situação:

Meu chefe ta olhando a página de consulta/visualização e em outro pc uma pessoa insere um registro em uma tabela. Meu chefe não fica sabendo porque a pagina de consulta/visualização fez a consulta e parou, ou seja, queria que de tempos em tempos a pagina de consulta/visualização desse uma checada nos dados e se houvesse diferença abrisse um popup avisando que existem dados novos e oferecendo a opção de atualizar a página.

Simples né? Mas to batendo cabeça :P

Uma tag meta com refresh de tantos em tantos segundos não resolve, porque imagine que ele está numa reuniao mostrando dados, gráficos etc e a página do nada dá um refresh :S meio esquisito ne?

Pensei em uma função que roda no body com um onload função atualiza() e essa função repetiria as consultas e compararia as váriáveis. Um if analisaria e daria a opção de refresh. Mas o problema é que essa opção não está funcionando.

Deve haver um jeito bem simples de fazer isso rsrs mas como sou novato ainda não descobri, se alguém puder me ajudar agradeço.

Abraços.

Editado por dudu_linux
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Use AJAX, assim dá pra fazer conferência e lançar avisos na tela sem dar refresh... de qualquer maneira seria interessante que fosse guardada a data da última atualização na tabela, assim você mandaria a data da última consulta, se existisse alguma dado alterado após aquela data é porque houve modificação, caso contrário não houve nenhum tipo de modificação nos dados...

Link para o comentário
Compartilhar em outros sites

  • 0

Solução!!!!

Bom, ainda não sei nada de Ajax, mas consegui achar uma solução para essa questão:

O site base foi: http://forum.imasters.uol.com.br/lofiversi...hp/t270955.html

Mas ele contem alguns erros, vamos a minha solução (até porque fórum server para contribuir e não somente sugar ;) )

crie a seguinte tabela:

mysql> use mysql ; //serve para escolhermos um BD

mysql> CREATE TABLE `tabela` (

`id` INT NOT NULL AUTO_INCREMENT ,

`nome` VARCHAR( 100 ) NOT NULL ,

PRIMARY KEY ( `id` )

) TYPE = MYISAM ; //criamos a tabela chamada tabela com dois campos, um id automatico e um "nome".

Crie uma pagina chamada pagina.php com o seguinte conteúdo (coloque a senha do seu mysql):

<?php
session_start();

$host = "localhost";//coloque aqui o seu servidor mysql
$user = "root";//coloque aqui o usuario do seu banco de dados mysql
$pass = "";//coloque aqui a senha do seu banco de dados mysql
$base = "mysql";// coloque aqui o nome do seu banco de dados
//conecta ao mysql
mysql_connect("$host", "$user", "$pass") or die ('Erro ao conectar ao mysql, veja:: ' . mysql_error());
mysql_select_db("$base") or die ('O banco de dados não existe!!!');

$sql=mysql_query("SELECT * FROM tabela order by id desc limit 1");
//$resultado = mysql_query($query,$conexao);
while ($linha = mysql_fetch_array($sql)) {
  
$nome_atual= $linha['nome']; 

echo "nome atual = ".$nome_atual." .<br>";

}

if ($_SESSION["nome_inicial"] == $nome_atual)
{
echo "igual";
}

else
{
echo "diferente";
echo "&lt;script>alert('Janela de Alerta.');</script>";

}



?>
Crie outra página chamada mostra_dados.php
<?
session_start();

$host = "localhost";//coloque aqui o seu servidor mysql
$user = "root";//coloque aqui o usuario do seu banco de dados mysql
$pass = "";//coloque aqui a senha do seu banco de dados mysql
$base = "mysql";// coloque aqui o nome do seu banco de dados
//conecta ao mysql
mysql_connect("$host", "$user", "$pass") or die ('Erro ao conectar ao mysql, veja:: ' . mysql_error());
mysql_select_db("$base") or die ('O banco de dados não existe!!!');

$sql=mysql_query("SELECT * FROM tabela order by id desc limit 1");
//$resultado = mysql_query($query,$conexao);
while ($linha = mysql_fetch_array($sql)) {
  
$nome_inicial= $linha['nome']; 

$_SESSION["nome_inicial"] = $nome_inicial;

}

echo "nome inicial = ".$nome_inicial." <br>";
?>

&lt;script>
setInterval("messages()", 3000);
function messages(){
var body = "";

        if (window.XMLHttpRequest) {
                xmlhttp = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } else {
            alert("Seu navegador não suporta XMLHttpRequest.");
                return;
        }

    xmlhttp.open("POST", "pagina.php", true);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    xmlhttp.setRequestHeader("Pragma", "no-cache");

    xmlhttp.onreadystatechange = processReqChange;
    xmlhttp.send(null);

}

function processReqChange() {
    if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                document.getElementById("texto").innerHTML = xmlhttp.responseText;
                document.getElementById("mensagem").value = document.getElementById("mensagem").value;
                } else {
                    alert("Problemas ao carregar o arquivo.");
                }
    }
}
//-->

</script>

<div id="texto">

</div>

Abra num navegador a pagina: mostra_dados.php

Não vai acontecer nada porque não temos nenhum registro.

agora no mysql execute esse comando:

mysql> use mysql ;

mysql> INSERT INTO `tabela` ( `id` , `nome` ) VALUES ('', 'Dudu_linux');

Olhe a página mostra_dados.php. Vai aparecer nome= Dudu_linux :D :D :D

Insiram mais dados, excluam, editem, etc, vão perceber que a página é atualizada automaticamente sem refresh e fazendo a consulta no bd ;)

Bom, eu quero que abra um popup e ofereça a opção de refresh e faça a consulta em 20 tabelas e verifique cerca de 50 itens, mas o importante é que a funcionalidade está ai ;)

Abraços.

EDIT: Adicionei o session_start e já está verificando as variaveis, porém agora acho que tem um problema de Ajax. Quando você insere um novo registro, o mostra_dados.php mostra que as variáveis foram alteradas, porém não está abrindo a janela de alerta. Acho que é problema de Ajax, ele parece que não está interpretando as tags <script></script> porque testei com tags html e funcionam. Alguma sugestão?

Abraços

Editado por dudu_linux
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...