Ir para conteúdo

Arquivado

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

Vales & Dores

AS mensagens nao estao indo para a div

Recommended Posts

gente de PHP eu ate to legal, sem problemas, tato que a parte php que nao estava funcionando eu arrumei sozinho

mas a parte em java ta me matando isso e um chat que funciona na ideia de login polling, mas quando eu mando a msg ela vai pro BD de boa.

 

mas a msg la dentro nao vai para a div nao estou tendo retorno do que eu escrevo.

 

ja lutei bastante agora pessoa ajuda aos melhores do que eu,

 

Espero acinosamente por uma resposta obrigado pessal pela sua atenção

 

 

OBS: eu dividi php do java mas os dois sao um arquivo só firmeza ... Obrigado

 

<?php

// Conecta
include_once('conectar_bd.php');

// Cria a tabela de chat, caso ainda não exista
$stmt = $dsn->prepare("
   CREATE TABLE IF NOT EXISTS chat (
       id INT UNSIGNED NOT NULL AUTO_INCREMENT,
       mensagem VARCHAR(400) NOT NULL,
       timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
       PRIMARY KEY (id)
   ) ENGINE=MEMORY
");

$stmt->execute();



// Salva a mensagem se ela estiver sendo postada
if(isset($_POST['mensagem'])){
   // Limpa mensagens antigas
   $stmt = $dsn->prepare("DELETE FROM chat WHERE timestamp < NOW() - INTERVAL 1 MINUTE");
       $stmt->execute();
   // escapa a string
   $mensagem = mysql_real_escape_string($_POST['mensagem']);

   // insere na tabela chat
   $stmt = $dsn->prepare("INSERT INTO chat(mensagem) VALUES ('$mensagem')");
       $stmt->execute();

   // pára o processamento
   exit;

}

// Cliente quer receber mensagens mais novas que o id fornecido
elseif(isset($_GET['ultimo_id'])){
   // desabilita o time limit porque queremos um loop infinito logo abaixo
   set_time_limit(0);

   // prepara o número para a query
   $ultimo_id = (int)$_GET['ultimo_id'];

   // mensagens que serão retornadas ao cliente
   $mensagens = array();
var_dump ($_POST['mensagem']);
   // vai tentando achar mensagens até conseguir
   while(true){
       // pega as últimas 10 mensagens
       $stmt = $dsn->prepare("SELECT id, mensagem FROM chat WHERE id > $ultimo_id ORDER BY id DESC LIMIT 10");
               $stmt->execute();

               $obj = $stmt->rowCount();

       // se achar alguma mensagem
       if($obj){
           // preenchemos o array com as mensagens
            $row = $stmt->fetchAll();

                               foreach($row as $ver)
                               {
                               $mensagens[] = $ver;
                               }



           // coloca as mensagens em ordem, já que fizemos order by id DESC
           $mensagens = array_reverse($mensagens);

           // pára o loop infinito
           break;
       }
       // se não tiver mensagem nova ainda
       else{
           // pausa o loop infinito um pouquitinho
           usleep(250);
       }
   }

   // chegando até aqui, podemos retornar o array $mensagens como json
   echo json_encode($mensagens);

   // e terminar esta requisição pro cliente poder ler o json
   exit;
}

// se chegamos até aqui, o cliente simplesmente quer usar o chat boladão

// envia header com encoding utf-8
header("Content-type: text/html; charset=utf-8");
?>

 

 

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
<title>LOVE - ME::</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="author" content="hamanom"/>
<script type="text/javascript">
// <![CDATA[

// variável que vai guardar o id da última mensagem que recebemos
var ultimo_id = 0;

// variável que será o elemento da div das mensagens
var chat;

// variável que será o elemento da caixa de texto de mensagem
var mensagem;


// variável que será o objeto XHR das mensagens recebidas
var xhr_chat;

// montamos o xhr que recebe mensagens em browsers bacanas
if( window.XMLHttpRequest ){
   xhr_chat = new XMLHttpRequest();
}
// ou montamos o xhr para o internet explorer
else if ( window.ActiveXObject ){
   xhr_chat = new ActiveXObject("Microsoft.XMLHTTP");
}

// função callback para qualquer novidade na requisição de mensagens
function processar(){
		// quando a requisição estiver completa
		if ( xhr_chat.readyState == 4 ) {
		// se houve sucesso na requisição
		if ( xhr_chat.status == 200 ) {
		// transforma o texto retornado em json
           var json = eval('(' + xhr_chat.responseText + ')');

           // le cada item do array retornado por json
           for (i in json) {
               // acessa a mensagem da iteração atual
               var mensagem = json[i];

               // caso não tenha mensagens validas
               if( ! mensagem.mensagem ){
                   // não queremos ter erro de javascript
                   return;
               }

               // escapa tags html da mensagem recebida
               var texto = mensagem.mensagem.replace(/</g, '<');
                   texto = texto.replace(/>/g, '>');

               // criamos um parágrafo pra cada mensagem retornada
               var p = document.createElement('p');
                   p.innerHTML = texto;

               // adicionamos o parágrafo na div de mensagens
               chat.appendChild(p);
           };

           // id da última mensagem para depois pegar apenas as mais novas
           if ( json[json.length-1] ){
               // pega a propriedade id da última mensagem
               ultimo_id = json[json.length-1].id;
           }

           // coloca a barra de rolagem no final
           chat.scrollTop = chat.scrollHeight;
       }

       // sempre que completar a requisição, criaremos uma nova
       setTimeout(atualizar, 250);
   }
};

// função que pede as mensagens mais novas que o id que temos
function atualizar(){

   // enviaremos para o próprio arquivo e acrescentamos o ultimo id
   xhr_chat.open('GET', location.pathname + '?ultimo_id=' + ultimo_id, true);

   // associamos nossa função de callback 
   xhr_chat.onreadystatechange = processar;

   // e então enviamos a requisição sem nenhum parâmetro extra
   xhr_chat.send(null);
}

// espera carregar a página
window.onload = function(){
   // guarda o elemento da div das mensagens
   chat = document.getElementById('bate_papo');

   // guarda o elemento da caixa de texto de mensagem
   mensagem = document.getElementById('mensagem');

   // adiciona evento ao formulário para fazer o envio por ajax
   document.getElementById('envio').onsubmit = function(){
       // pega o texto digitado
       var texto = mensagem.value;

       // tira os espaços do início e fim
       texto = texto.replace(/^\s*/, '');
       texto = texto.replace(/\s*$/, '');

       // se o texto estiver vazio, nem envia
       if( texto == '' ){
           return false;
       }

       // montamos o xhr para enviar mensagem por browsers joinhas
       if( window.XMLHttpRequest ){
           var xhr_envio = new XMLHttpRequest();

       // ou montamos o xhr para enviar mensagem pelo internet explorer
       }else if ( window.ActiveXObject ){
           var xhr_envio = new ActiveXObject("Microsoft.XMLHTTP");
       }

       // enviaremos a mensagem por post para nós mesmos, assincronamente
       xhr_envio.open("POST", location.pathname, true);

       // definimos a requisição como envio de formulário
       xhr_envio.setRequestHeader
           ('Content-Type', 'application/x-www-form-urlencoded');

       // e então escapamos e enviamos o texto
       xhr_envio.send( 'mensagem=' + encodeURIComponent(texto) );

       // limpa e foca a caixa de texto
       mensagem.value = '';
       mensagem.focus();

       // não submete o formulário tradicionalmente
       return false;
   };

   // foca a caixa de texto ao carregar a página
   mensagem.focus();

   // começa a consultar as atualizações
   atualizar();
};
//]]>
</script>
<style type="text/css">
body {
   font-family: sans-serif;
   font-size: 12px;
   margin: 0;
}

h1 {
   border-bottom: 1px solid #a4a4a4;
   background: #eaeaea;
   color: #333;
   padding: 1em;
   margin: 0;
}

#bate_papo {
   border: 1px solid #a4a4a4;
   padding: 1em;
   margin: 1em;
   height: 25em;
   overflow: auto;
}

#mensagem {
   min-width: 50em;
}

label, input {
   padding: 0.5em;
}
</style>
</head>
<body>
<h1>chatildis!</h1>
<div id="bate_papo">
   <p>E so o chatildis final de bate-papo ultra, baby!</p>
   <p>

   </p>
</div>
<form id="envio" method="post" action="processo_chat.php">
<p>
   <label for="mensagem">Mensagem:</label>
   <input type="text" name="mensagem" id="mensagem" maxlength="380" />

   <input type="submit" name="enviar" value="Enviar" />
</p>
</form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Onde o Java entra nessa história? :wacko:

Acho que você se confundiu. Deve estar a procura de ajuda com Javascript. Este não é o forum correto. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Onde o Java entra nessa história? :wacko:

Acho que você se confundiu. Deve estar a procura de ajuda com Javascript. Este não é o forum correto. ;)

poxa desculpa nao sabia disso mas ai da uma mao ai vai depois eu procuro esse forum correto

Compartilhar este post


Link para o post
Compartilhar em outros sites
poxa desculpa nao sabia disso mas ai da uma mao ai vai depois eu procuro esse forum correto

Mas aí é que tá. Meu conhecimento limitado de Javascript me impossibilita de ajudá-lo. Postando no forum de Javascript certamente terá alguém para ajudá-lo.

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.