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

Chat em PHP+MYSQL+AJAX


Paulo Lieuthier

Pergunta

Olá pessoal,

funçando no Google achei um sistema de chat em PHP, AJAX e MYSQL, disponível aqui.

Porém, não consegui fazer funcionar perfeitamente, pois sou novo em PHP. São as páginas:

chat.php

<?php
if ( array_key_exists( 'username', $_POST ) ) {
  $_SESSION['user'] = $_POST['username'];
}
$user = $_SESSION['user'];
?>
<html>
<head><title><?php echo( $user ) ?> - Chatting</title>
&lt;script src="prototype.js"></script>
</head>
<body>

<div style="height:400px;overflow:auto;">
<table id="chat">
</table>
</div>

&lt;script>
function addmessage()
{
  new Ajax.Request( 'add.php', {
     method: 'post',
     parameters: $('chatmessage').serialize(),
     onSuccess: function( transport ) {
       $('messagetext').value = '';
     }
  } );
}
</script>

<form id="chatmessage">
<textarea name="message" id="messagetext">
</textarea>
</form>

<button onclick="addmessage()">Add</button>

&lt;script>
var lastid = 0;
function getMessages()
{
  new Ajax.Request( 'messages.php?id='+lastid, {
    onSuccess: function( transport ) {
      var messages = transport.responseXML.getElementsByTagName( 'message' );
      for( var i = 0; i < messages.length; i++ )
      {
        var message = messages[i].firstChild.nodeValue;
        var user = messages[i].getAttribute('user');
        var id = parseInt( messages[i].getAttribute('id') );

        if ( id > lastid )
        {
          var elTR = $('chat').insertRow( -1 );
          var elTD1 = elTR.insertCell( -1 );
          elTD1.appendChild( document.createTextNode( user ) );
          var elTD2 = elTR.insertCell( -1 );
          elTD2.appendChild( document.createTextNode( message ) );

          lastid = id;
        }
      }
      window.setTimeout( getMessages, 1000 );
    }
  } );
}
getMessages();
</script>

</body>
<html>
messages.php
<?php
require_once("DB.php");

header( 'Content-type: text/xml' );

$id = 0;
if ( array_key_exists( 'id', $_GET ) ) { $id = $_GET['id']; }

$db =& DB::Connect( 'mysql://root@localhost/chat', array() );
if (PEAR::isError($db)) { die($db->getMessage()); }
?>
<messages>
<?php
$res = $db->query( 'SELECT * FROM messages WHERE message_id > ?', $id );
while( $res->fetchInto( $row ) )
{
?>
<message id="<?php echo($row[0]) ?>" user="<?php echo($row[1]) ?>">
<?php echo($row[2]) ?>
</message>
<?php
}
?>
</messages>
add.php
<?php
require_once("DB.php");

$db =& DB::Connect( 'mysql://root@localhost/chat', array() );
if (PEAR::isError($db)) { die($db->getMessage()); }

$sth = $db->prepare( 'INSERT INTO messages VALUES ( null, ?, ? )' );
$db->execute( $sth, array( $_SESSION['user'], $_POST['message'] ) );
?>

O problema, amigos, é que o sistema não usa comendos de mysql simples ($mysql_connect, $mysql_query). Na página ass.php, ele até usa um comando chamado "execute" ($db->execute(...)), o qual eu desconheço.

Gostaria da ajuda de vocês para passar esses comandos para um mysql mais simples...

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Isso porque pelo que você postou isso é uma chamada de método de uma classe de conexão, que esta no arquivo DB.php,

veja que esta sendo requerido: require_once("DB.php");, poste o código desta pagina também.

Link para o comentário
Compartilhar em outros sites

  • 0
Isso porque pelo que você postou isso é uma chamada de método de uma classe de conexão, que esta no arquivo DB.php,

veja que esta sendo requerido: require_once("DB.php");, poste o código desta pagina também.

Este é o proble, cara. Esta arquivo não existe, não veio no pacote. No manual, ele diz:

At the top of the script, I connect to the database with the DB library, which is available from PEAR (see Resources). If you haven't installed that library already, you can do so with the following command:

% pear install DB

With PEAR installed, the script can query the current messages, fetch each row, and output the user name and the comment text.

No servidor que eu hospedo meu site não tem PEAR instalado.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, pelo que pude ver o sistema exige que a biblioteca esteja instalada, nesse caso você vai ter que solicitar isso. Veja com que você hospeda o que ele pode fazer nesse caso.

Link para o comentário
Compartilhar em outros sites

  • 0
Bom, pelo que pude ver o sistema exige que a biblioteca esteja instalada, nesse caso você vai ter que solicitar isso. Veja com que você hospeda o que ele pode fazer nesse caso.

Obrigado, mas eu achei que eu poderia substituir comandos como

$db =& DB::Connect( 'mysql://root@localhost/chat', array() );
por
$conn = mysql_connect("XXXXXXXXXXXXX", "XXXXX", "XXXXXX");

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...