Peguei na net aquele chat do Romano e me deparei com a seguine situação;
Uma coisa me chamou a atenção.
Quando mando mensagem privada para o usuario TODOS, eu, o usuario ue envia, vejo a mensagem reservada. Porem, os outros estinatarios não veem a mensagem.
Porem, quando a mensagem é endereçada a cada um deles em privado. Ai, eles veem sim a mensagem.
Se enviar a mensagem a TODOS sem ser privada todos veem mas se for privada, só que enviou ve.
Como corrigir isso?
como normalmente não consegui, ai fiz assim:
Quando clikasse no usuario, no menu de usuarios, se esse usuario fosso o "TODOS", teria uma div (que seria desabilitada) com um radio button dentro.
Quando o usuario não fosse o todos, ai sim a div seria habilitada e o clike no radio butoon habilitado tambem.
Acontece que, numa coinversa em resevado, quando eu submeto a mensagem, a pagina da um reload e, como eu coloquei no carregamento da pagina que o style.block do radio buitton seria none. daí não sei como, apos o reload da pagina, eu saber que o usuario selecionado é o mesmo e que pode continua liberado a radio.
/**
* Lista as mensagens da sala.
**/
function msgs() {
$i = "0";
$msgs=array();
$consulta = mysql_query("SELECT * FROM msg WHERE ((rem='".$this->nome."' OR dest='".$this->nome."' OR tipo='pub') && date > '$_SESSION[date]' && sala='".$this->sala."') ORDER BY date ASC;", $this->dbh);
while ($row = mysql_fetch_array($consulta)) {
$msgs[$i]["tipo"] = $row["tipo"];
$msgs[$i]["msg"] = $row["msg"];
$msgs[$i]["som"] = $row["som"];
$msgs[$i]["dest"] = $row["dest"];
$msgs[$i]["rem"] = $row["rem"];
$_SESSION['date'] = $row["date"];
$i++;
}
mysql_free_result($consulta);
return $msgs;
}
Só não entendo porque o reservado a todos só vai para quem envia e o enviado a todos sem reserva vai para todos ois usuarios.
Pela query ou pelo php não vejo logica.
Segue tambem a estrutura da tabela:
Pergunta
Carlos Rocha
Pessoal.
Boa Noite.
Peguei na net aquele chat do Romano e me deparei com a seguine situação;
Uma coisa me chamou a atenção.
Quando mando mensagem privada para o usuario TODOS, eu, o usuario ue envia, vejo a mensagem reservada. Porem, os outros estinatarios não veem a mensagem.
Porem, quando a mensagem é endereçada a cada um deles em privado. Ai, eles veem sim a mensagem.
Se enviar a mensagem a TODOS sem ser privada todos veem mas se for privada, só que enviou ve.
Como corrigir isso?
como normalmente não consegui, ai fiz assim:
Quando clikasse no usuario, no menu de usuarios, se esse usuario fosso o "TODOS", teria uma div (que seria desabilitada) com um radio button dentro.
Quando o usuario não fosse o todos, ai sim a div seria habilitada e o clike no radio butoon habilitado tambem.
Acontece que, numa coinversa em resevado, quando eu submeto a mensagem, a pagina da um reload e, como eu coloquei no carregamento da pagina que o style.block do radio buitton seria none. daí não sei como, apos o reload da pagina, eu saber que o usuario selecionado é o mesmo e que pode continua liberado a radio.
Mais facil voces acessando:
http://www.carcleo.com/chat2
Quem puder ajudar agradeço.
Aqui esta a função que lista as mensagens:
/** * Lista as mensagens da sala. **/ function msgs() { $i = "0"; $msgs=array(); $consulta = mysql_query("SELECT * FROM msg WHERE ((rem='".$this->nome."' OR dest='".$this->nome."' OR tipo='pub') && date > '$_SESSION[date]' && sala='".$this->sala."') ORDER BY date ASC;", $this->dbh); while ($row = mysql_fetch_array($consulta)) { $msgs[$i]["tipo"] = $row["tipo"]; $msgs[$i]["msg"] = $row["msg"]; $msgs[$i]["som"] = $row["som"]; $msgs[$i]["dest"] = $row["dest"]; $msgs[$i]["rem"] = $row["rem"]; $_SESSION['date'] = $row["date"]; $i++; } mysql_free_result($consulta); return $msgs; }Aqui esta o filtro<?php #################################### # # # MODIFICADO POR: JRF WEBMASTER # # VERSÃO ATUAL: 8.0 # # DATA: 01/08/2006 # # # #################################### include_once("./config.php"); include_once("./global.php"); include_once("./biblioteca/tbs_class.php"); $banco = new chat; $banco->dados($_GET['uid']); if($banco->block($_GET['uid'])){ $target="vai();"; }else{ $target=""; } if (empty($_SESSION['date'])) { $_SESSION['date'] = 0; } if (empty($_SESSION['header']) OR $_SESSION['header']!= $_GET['uid']) { $arquivo = "./templates/".$banco->config['modelo']['val']."/principal.htm"; $header = fopen($arquivo, "r"); $lido = fread($header, filesize($arquivo)); fclose($header); $limpa = addslashes($lido)."\n\n"; $limpa = str_replace("\t", "", $limpa); $limpa = str_replace("\r", "", $limpa); $limpa = str_replace("\n", "\\n", $limpa); $inicio = $limpa; $_SESSION['header'] = $_GET['uid']; } $model = new clsTinyButStrong; $model->LoadTemplate("./templates/".$banco->config['modelo']['val']."/inferior.htm"); $msgs = $banco->msgs(); $total = count($msgs); $cont = $banco->cont("TODOS"); $str = $ext = ""; $str .= (!empty($inicio)) ? $inicio : ""; for ($i = "0"; $i < $total; $i++) { $tipo = $msgs[$i]["tipo"]; $rem = $msgs[$i]["rem"]; $dest = $msgs[$i]["dest"]; $mensagem = addslashes($msgs[$i]["msg"]); $som = $msgs[$i]["som"]; if (empty($_SESSION['ignora'][$rem]) && empty($_SESSION['ignora'][$rem])) { $para = ($dest == $banco->nome) ? ' bgcolor=\"#cccccc\"' : ""; $codigo = '<table width=\"100%\" border=\"0\" cellspacing=\"5\" cellpadding=\"2\"><tr><td'.$para.'>'.$mensagem.'"+PlaySound("'.$som.'")+"</td></tr></table>'."\n"; $codigo = str_replace("\t", "", $codigo); $codigo = str_replace("\r", "", $codigo); $codigo = str_replace("\n", "\\n", $codigo); $str .= $codigo; } if (empty($inicio) && ($som == "entra" OR $som == "saida" OR $cont != $_SESSION['cont'])) { $ext .= "window.parent.nomes.location.reload();\n"; $_SESSION['cont'] = $cont; } } $banco->atualiza(); $refresh=10*$banco->config['refresh']['val']; $model->Show(); ?> <script language="Javascript"> function right(e) { if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2)){ alert("Proibido a cópia do código desta página"); return false; } else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2 || event.button == 3)) { alert("Proibido a cópia do código desta página"); return false; } return true; } document.onmousedown=right; if (document.layers) window.captureEvents(Event.MOUSEDOWN); window.onmousedown=right; </script>Só não entendo porque o reservado a todos só vai para quem envia e o enviado a todos sem reserva vai para todos ois usuarios. Pela query ou pelo php não vejo logica. Segue tambem a estrutura da tabela:Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.