+3

Um Simples Chat com MySQL

criado por Rodrigo Romano Moreira em 28/04/2002 4:07pm
A página para receber as mensagens (princ.htm) não tem nada de particular, pode ser uma página vazia (é só para receber as mensagens mesmo). Quem faz o trabalho sujo de verdade é o script abaixo (ler.php):

<html><head>
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Refresh" CONTENT="2">
</head>
<body>
<?php
include ("./func.php");
include ("./atualiza.php");

$consulta = "SELECT codigo,mensagem FROM mensagens ORDER BY codigo ASC";

$resultado = mysql_query($consulta,$conexao);

while ($linha = mysql_fetch_row($resultado)){
   if (valor($conexao,$ip) < $linha[0]){
      echo "<script>";
      echo "parent.principal.document.writeln(\"<p>$linha[1]</p>\");";
      echo "parent.principal.scrollTo(0,100000);";
      echo "</script>";
      $resultado2 = "UPDATE perfis SET last ='$linha[0]' WHERE ip ='$ip'";
      $atualiza2 = mysql_query($resultado2, $conexao);
   }
}

mysql_close($conexao);

flush();
?>

Em ler.php tem como função enviar as mensagens e atualizar a tabela “perfis”. Para envio das mensagens é usado um javascript (escreve na página princ.php, por isso que o valor no frame é zero). Nas linha finais do “while” é registrado na tabela “perfis” a ultima mensagem lida.

Para atualizar a lista de usuários é usado o script atualiza.php. Ele é parecido com remove.php, só para tabela "perfis".

<?php
include ("./config.php");

$time = @time();
$timer=time();
$timeout = time()-(60*$tuser);

$conexao = mysql_connect($host,$id,$senha) or die ("Could not connect"); //Conecta ao mysql

mysql_select_db($db, $conexao); //Seleciona banco de dados criado

$consulta = "SELECT time FROM perfis";

$resultado = mysql_query($consulta,$conexao);

while ($linha = mysql_fetch_row($resultado)) {
   if($linha[0] < $timeout){
      $excluir = "DELETE FROM perfis WHERE time ='$linha[0]'";
      $atualiza = mysql_query($excluir, $conexao);
   }
}

$resultado2 = "UPDATE perfis SET time ='$timer' WHERE ip ='$ip'";

$atualiza2 = mysql_query($resultado2, $conexao);
?>

Comentários:

Mostrando 1 - 10 de 20 comentários
daniel disse:
Quando abro o "chat" aparece essa frase aqui e nao entra mais nada, oq será isso?

$linha[1]

\");"; echo "parent.principal.scrollTo(0,100000);"; echo ""; $resultado2 = "UPDATE perfis SET last ='$linha[0]' WHERE ip ='$ip'"; $atualiza2 = mysql_query($resultado2, $conexao); } } mysql_close($conexao); flush(); ?>
19/03/2006 7:46pm (~18 anos atrás)

Na func.php nessa parte ta dando erro

$consulta = "select $ele from $tab";
$resultado = mysql_query($consulta);
while ($linha = mysql_fetch_row($resultado)){

O erro eu reparei que esta em $tab
Tipo meu serv ta com register glabals off
Tipo de onde vem $tab e $ele(2)?

Valeu mano.

14/01/2006 9:10pm (~19 anos atrás)

Parabems mano muito bom esse chat.
E como sempre bem esplicado.
Valeu mano!!
12/01/2006 10:48pm (~19 anos atrás)

Eu digito o apelido e quando clicko em entrar ocorre este erro:
mysql_fetch_row():supplied argument is not valid MYSQL result resource in func.pho on line 7
Pq?
02/01/2006 6:13pm (~19 anos atrás)

Olha só, pode me ajudar com esse erro:

Warning: mysql_connect(): Can't connect to MySQL server on '204.10.105.219' (10061) in D:\hshome\cspower\cspower.net\chat\entra.php on line 5
Could not connect

Sendo que todos os dados estão corretos, a porta do meu mysql é 3306, eu queria saber o por que desse 10061 aí!
01/01/2006 3:31pm (~19 anos atrás)

Ola pessoal, gostei muito do chat mas achei muito chato o barulho do refresh de 2 em 2 segundos, acho q ia deixar um pouco cansativo para quem estivesse teclando no chat. Então acrescentei um javascript para tirar este refresh, confiram ai:

1º) Tire o refresh da página 'ler.php';
2º) O arquivo 'trata.php' ficara assim:

<?php
include ("./config.php");
include ("./func.php");


$conexao = mysql_connect($host,$id,$senha) or die ("Could not connect"); //Conecta ao mysql

mysql_select_db($db, $conexao); //Seleciona banco de dados criado

$hora=date("(H:i:s)");

$nome=retorna ($conexao,"ip","nome","perfis",$ip);

$mes="<font face=verdana size=1 color=000000>$hora</font><font face=verdana size=1 color=ff6600> $nome <font face=verdana size=1 color=000000>fala para</font> $b</font>: <font face=verdana size=1 color=000000>$e</font>";

include ("./insere.php");

echo "<html><head>";
echo "<meta HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">";
echo "<script language=JavaScript>
function DuasUrls(frame1,url1,frame2,url2) {
parent.frames(frame1).location = url1;
parent.frames(frame2).location = url2;
}
</script>";

echo "</head><body onLoad=\"javascript:DuasUrls('inferior','form.php','conteudo','ler.php')\">";
echo "</body></html>";

?>

Teste! qdo vc envia a mensagem, ele faz o refresh na página form.php e ler.php, enviando a mensagem para o chat.

Bons Estudos,
saintsanchez ::)
22/12/2005 2:56pm (~19 anos atrás)

pq o @(arroba) antes da função time nos arquivos remove e atualiza (.php)???

$time = @time();
$timer=time();
$timeout = time()-(60*$tmesg);
28/05/2005 10:14pm (~19 anos atrás)

aí amigo não o pq de vc ter colocado o flush no final do arquivo atualiza.php!! Poderias me explicar?
28/05/2005 9:58pm (~19 anos atrás)

aí romano, para que serve o target nos frames? é possível usá-los como atributo nos frames?
28/05/2005 5:50pm (~19 anos atrás)

eu até tentei criar uma sala de chat, porém não sei em qual programa copio os código para que eu possa testar e aprender.
frontpage?
wordpad?

ou tenho que ter um programa específico para isso?
23/09/2004 12:36am (~20 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)