kafunga Postado Outubro 28, 2004 Denunciar Share Postado Outubro 28, 2004 Olá povo do fórum, eu peço uma ajuda a vocês, como eu faço um sistema interno de mensagens(igual ao do Fórum scriptbrasil)?agredesso desde já! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Error404 Postado Outubro 28, 2004 Denunciar Share Postado Outubro 28, 2004 Isso é uma questão de lógica... imagine como é feito. Passa pra um papel o esquema... geralmente ajuda... Mas deve ser uma estrutura simples de tabelas... Poste aí pra gente como você acha que funciona Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kafunga Postado Outubro 29, 2004 Autor Denunciar Share Postado Outubro 29, 2004 cara eu já tentei pensar aqui, mais ta um pouco dificil!tipo, eu pensei assim:1 usuario precisa de varios topicos q cada tópico tem 1 mensagem...certo?mais como eu vou fazer isto?eu tentei usar uma ferramenta aqui(DB Design) mais fui derrotado.me dê uma dica de como fazer isto aew!POr favoragradesso desde já! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Error404 Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 1 usuario precisa de varios topicos q cada tópico tem 1 mensagem...certo?Por que ele precisa de vários tópicos se cada um vai ter só uma mensagem?Não é mais fácil você pensar na caixa do usuário como um tópico e cada mensagem que ele receber como um POST? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kafunga Postado Outubro 29, 2004 Autor Denunciar Share Postado Outubro 29, 2004 Não é mais fácil você pensar na caixa do usuário como um tópico e cada mensagem que ele receber como um POST?mais tem o seguinte:vai ter uma pagina de cadastro de usuarios:<html> <head> <title>Mensagens Internas</title> </head> <body> <form action="cadastrar.php?acao=cadastrar" method="POST"> Nome: <input type="text" name="nome" size="17"> E-mail: <input type="text" name="email" size="17"> Login: <input type="text" name="login" size="17"> Senha: <input type="password" name="senha" size="17"> <input type="submit" name="btnCadastrar" Value="Cadastrar"> </form> </body></html>outra pagina que faz a verificação dos campos e envia ao banco:<?php//Minhas funções: Conecta ao banco, valida campos e executa comandos sqlrequire_once("funcoes/uteis.php");//recupera dados do form(cadastro.php) $acao = $_POST["acao"]; $nome = $_POST["nome"]; $email = $_POST["email"]; $login = $_POST["login"]; $senha = $_POST["senha"];//executa a função de validar os campos$arCampos = array($nome, $email, $login, $senha);$arErros = array("<li>Digite um NOME!</li>", "<li>Digite um LOGIN!</li>", "<li>Digite um EMAIL</li>" "<li>Digite uma SENHA!</li>",);$erros = validate($arCampos, $arErros);//se não houver nenhum erro executa este comando if(empty($erros)){ If($acao=cadastrar){ //conecta ao banco de dados conectar("msg"); $sql = "INSERT INTO 'usuarios' values ('$nome', '$email', '$login', '$senha')"; executarSQL("$sql"); header("location:logar.php?msg=Cadastro efetuado com sucesso!"); exit();}}else{ header("location:cadastro.php?msg=$erros"); exit();}?>outra para logar:<html><head><title>teste</title></head><body><form action="verifica.php" method="post"> <table width="35%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="19%"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Usuario:</font></strong></td> </tr> <tr> <td width="81%"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> <input name="login" type="text" size="15"> </font></strong></td> </tr> <tr> <td><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Senha:</font></strong></td> </tr> <tr> <td><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> <input name="senha" type="password" size="15"> </font></strong></td> </tr> <tr> <td><input name="Submit" type="submit" value="Logar >>"></td> </font></strong></td> </tr> </table> </form> </body></html>outra pra verificar o login:<?php$login = $_POST['login];$senha = $_POST['senha'];setcookie("login",$login); setcookie("senha",$senha);//-- conexão da base de dadosrequire_once("funcoes/uteis.php");//conectar ao bancoconnect("msg");$arCampos = array($login, $senha);$arErros = array("<li>Digite SEU LOGIN!</li>", "<li>Digite sua SENHA!</li>");$erros = validate($arCampos, $arErros);//se não houver nenhum erro executa este comando if(empty($erros)){$sql = "SELECT * FROM usuarios where login=$login';";$resultado = @mysql_query($sql);$linhas = @mysql_num_rows($resultado);$zoia = @mysql_fetch_row($resultado);if($senha!=mysql_result($resultado,0,"senha")){echo "<table bordercolor=\"#990000\">";echo "<tr>";echo "<td>";echo "<BR><BR><BR><BR><BR><p align=\"center\">Senha está incorreta!</p><br>";echo "<p align=\"center\">Não foi possivel o Login </p><meta http-equiv='refresh' content='2;URL=logar.php'>";echo "</td>";echo "</tr>";echo "</table>";}else if($senha==mysql_result($resultado,0,"senha")){echo "<table bordercolor=\"#990000\">";echo "<tr>";echo "<td>";echo "<BR><BR><BR><BR><BR><p align=\"center\">Login Efetuado ! <b>como:</b> $login <b>Aguarde....</b></p><meta http-equiv='refresh' content='2;URL=conteudo.php'>";echo "</td>";echo "</tr>";echo "</table>";}else{$erro="Oxe! não funciono não?";$erro="<p aling=center><a href=logar.php>Voltar</a></p>";}}mysql_close();?>outra que é o mais importante o conteudo:é aqui que eu traveioutra que é o form para enviar a mensagem:<?phprequire_once("funcoes/uteis.php");//conectar ao bancconnect("aula6");echo($_GET["msg]);$sql3 = mysql_query("SELECT * FROM usuarios");?><form action="enviar.php" method="POST"> <table> <tr> <td>usuario:</td> <td><SELECT name=categorias> <?php while ($sel = mysql_fetch_array($sql3)){ $codigo = $sel['id']; $login = $sel['login']; echo "<option value=$id>$login</option>"; } ?> </select> </td> </tr> <tr> <td>Titulo:</td> <td><input type="text" name="titulo" /></td> </tr> <tr> <td>Texto</td> <td> <textarea name="texto"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" name="btnEnviar" value="Enviar"></td> </tr> </table>agora a pagina que vai enviar para o banco:agora eu nçao sei, porque eu não sei como q vai fazer a estrutura do banco(as tabelas, campos)é isso que eu quero que você me ajude, a fazer as tabelas, e os campos interligado, porque o resto eu sei fazer!(eu acho!rs)agredesso a sua ajuda desde já! e muito obrigado pela a atenção(que pagação de pau!rs) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Error404 Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 Muito bonito o seu código mas ele não tem muito a ver com o que você está em dúvida agora... Eu quero que você pense em como fazer, se eu te disser como e te passar a estrutura pronta você não aprende nada... Imagine o seguinte: Um fórum onde cada tópico corresponde a um usuário, se você quer falar com aquele usuário, você vai ter que inserir uma mensagem no tópico dele.Agora pegue um papel [eu mesmo pego e faço um organograma ou desenhos, qualquer coisa que eu possa ir esboçando o sistema] e imagina isso em termos de tabelas.Você vai ter uma tabela que vai guardar os usuários. Cada usuário vai ter uma id única, só dele. Então é essa id que você vai usar pra identificar quais mensagens foram enviadas pra ele.Pegou o rumo da coisa? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kafunga Postado Outubro 29, 2004 Autor Denunciar Share Postado Outubro 29, 2004 Muito bonito o seu código mas ele não tem muito a ver com o que você está em dúvida agora... Eu quero que você pense em como fazer, se eu te disser como e te passar a estrutura pronta você não aprende nada... esta mais do que certoVocê vai ter uma tabela que vai guardar os usuários. Cada usuário vai ter uma id única, só dele. Então é essa id que você vai usar pra identificar quais mensagens foram enviadas pra ele.Pegou o rumo da coisa? sim peguei,mais com umas dúvidas:1º o campo id pode ser um auto_increment?2º eu quero saber onde vai ficar armazenado essas mensagens?(eu vou ter q criar um campo no qual, vai ser enviada todas as msg?) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Error404 Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 O campo id dos usuário tem que ser auto_increment, sim, claro!Agora, o campo da tabela onde vão ficar as mensagens e que vai se relacionar com a tabela dos usuários, não. Na tabela onde vão ficar guardadas as mensagens você precisa ter um campo que vai dizer de qual caixa é aquela mensagem e o valor desse campo não pode ser auto_increment.Nada impede que você tenha um valor auto_increment nas 2 tabelas, mas na tabela das mensagens, você vai precisar ter um campo que se relaciona com a id auto_increment da tabela dos users.Entendeu? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kafunga Postado Outubro 29, 2004 Autor Denunciar Share Postado Outubro 29, 2004 intão, as tabelas passariam a ser inodb?e eu teria que relacionar o id das mensagens com o id dos users, certo?na tabela ode ficaria as mensagens eu teria que ter tres campos:titulo, mensagem e autor(que é o user que esta enviando)e na hora de de fazer o select eu faria apenas da tabela de mensagem?primeiro faria um select na qual traria apenas o titulo e o autor, linkando para a mensagem? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabyo Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 Faz +- assim:tabela usuarios:id_usuarionome_usuarionumero_post => numero de post do membrotipo_membro => se é moderador,membro etc...data_cadastroemailimg_avataroutros dados se quiser colocar do usuario etc...tabela mensagensid_mensagemtitulo_mensagemfk_usuario_remetentefk_usuario_destinatariomensagemdata_mensagemperceba que o importante são essas informações com isso da pra montar um esquema legaltipo uma função que detecta a entrada do usuario ou troca de pagina e verifica se tem mensagem pra ele e envia pra eledeu pra entender +- ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Error404 Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 intão, as tabelas passariam a ser inodb?Não, cara inodb é um tipo de tabela, essas continuam sendo tabelas MyISAM normais.e eu teria que relacionar o id das mensagens com o id dos users, certo?Isso! Você precisa saber a qual caixa de mensagens aquela mensagem pertence...na tabela ode ficaria as mensagens eu teria que ter tres campos:titulo, mensagem e autor(que é o user que esta enviando)Sim, e também precisa ter um campo pra dizer pra quem ela foi enviada, o destinatário. Nesse campo é que entra a relação com a tabela dos usuários.Se você for fazer algum link do tipo "responder mensagem" seria interessante incluir a id do usuário que enviou a mensagem ao invés do username dele, ou até mesmo em conjunto, enviando o username e a id de quem enviou a mensagem. Guardar os 2 é mais espaço ocupado na tabela, mas vai ser mais rápido na hora de puxar, aí você tem que decidir o que acha melhor. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabyo Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 Eu fiz um sistema de mensagens internas tipo o do forum completo com bbcode etc...vou acabar de testar ele dai eu posto na sessao de script ate mais Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rptl Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 eu tb fiz um sistema desses por aqui. ficou bem simpatico. o funcionamento basico é o seguinte:como usei caixas postais (entrada, saida e lixeira), toda nova mensagem gera dois registros. um pro destinatario na caixa de entrada e outro pro remetente na caixa de saida.e todas mensagens antes de serem apagadas do banco vao pra lixeira.pensa ai, não é complicado. se tiver duvida, é só postar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabyo Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 não precisa gerar dois registros basta fazer o sistema que pegue pelo id do remetente e o id do destinatario dai você faz qualquer coisamas o principal num banco de dados é nunca repetir dados 1 regra sobre banco de dados é de normalização de tabelas o meu sistema ficou igual ao do forum mas eu fiz do meu jeito nem sei como o do forum funciona ,fiz pela logica que eu vejo ate mais pessoal Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kafunga Postado Outubro 29, 2004 Autor Denunciar Share Postado Outubro 29, 2004 galera do forum, obrigado pelas dicas, mais ainda não intendi...será que tem como vocês explicar dinovo(mais claro).agradesso desde já! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rptl Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 eu tinha feito com um só mas me deparei com a seguinte situação:e quando o usuario quiser deletar a mensagem que ele enviou por exemplo? ta deletando tb a do destinatario? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabyo Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 não basta montar um esquema tipo se o usuario apagar só não vai mais aparecer pra ele mas continua existindo ate o destinatario apagar também sacou?é facil, mas o principal é nunca repetir dados num banco, sempre a uma saida Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rptl Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 eu pensei nisso tambem, mas analisando o sistema do forum, e outros sistemas, como e107, o limite de mensagens conta todas as mensagens enviadas e recebidas. Então presume-se que utilize um OWNER (proprietario) da mensagem.na verdade não há duplicidade de dados pois são gerados mensagens com owners diferentes.EX:Quando eu envio uma mensagem,vai pra minha caixa de saida, e o owner sou EU. E outra msg vai pra caixa de entrada do usuario, e o owner fica sendo o usuario. Entendi o seu ponto fabyo, você fez uma FLAG verificando se os dois apagaram as msgs antes de excluir do banco.Mas parti do principio do email. Quando eu envio um email, fica um original pra mim e outro que é enviado. A lógica que segui foi essa Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kafunga Postado Outubro 29, 2004 Autor Denunciar Share Postado Outubro 29, 2004 origado pelas dicas, mais ainda não intendi...será que tem como vocês explicar dinovo(mais claro).agradesso desde já! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabyo Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 eu pensei nisso tambem, mas analisando o sistema do forum, e outros sistemas, como e107, o limite de mensagens conta todas as mensagens enviadas e recebidas. Então presume-se que utilize um OWNER (proprietario) da mensagem.na verdade não há duplicidade de dados pois são gerados mensagens com owners diferentes.EX:Quando eu envio uma mensagem,vai pra minha caixa de saida, e o owner sou EU. E outra msg vai pra caixa de entrada do usuario, e o owner fica sendo o usuario. Entendi o seu ponto fabyo, você fez uma FLAG verificando se os dois apagaram as msgs antes de excluir do banco.Mas parti do principio do email. Quando eu envio um email, fica um original pra mim e outro que é enviado. A lógica que segui foi essa beleza você também esta certo mas eu fiz assim porque já que era tudo no mesmo bancoe não teria necessidade de mandar 2 msgs mas sua logica também esta certasó que no caso do email o remetente e nem o destinatario compartilha o mesmo bancomas valeu, vamos tentar ajudar nosso amigo ai abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kafunga Postado Outubro 29, 2004 Autor Denunciar Share Postado Outubro 29, 2004 id_mensagem fk_usuario_remetentefk_usuario_destinatariotitulo_mensagemmensagem data_cadastromensagem_recebida SET("S","N")ok.mais isso vai ser tudo dentro de um table só, ou vai precisar fazer duas tables?e outra, tem tabem os daods do usuario!só queria que arrumasse um pouco melhor. Ok?se não for pedir de mais!agredesso a ajuda! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabyo Postado Outubro 29, 2004 Denunciar Share Postado Outubro 29, 2004 tabela usuarios id_usuario nome senha numero_posts fk_grupo nivel data_cadastro img_avatartabela gruposid_grupogrupo essa é minha logica tenta montar a sua em cima das ideias já postadaseu fiz isso hj porque você tava com duvidas, mas da pra fazer algo bem melhor e com calma Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
kafunga
Olá povo do fórum,
eu peço uma ajuda a vocês, como eu faço um sistema interno de mensagens(igual ao do Fórum scriptbrasil)?
agredesso desde já!
Link para o comentário
Compartilhar em outros sites
21 respostass 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.