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

Mensagens Internas


kafunga

Pergunta

21 respostass a esta questão

Posts Recomendados

  • 0

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 favor

agradesso desde já!

Link para o comentário
Compartilhar em outros sites

  • 0

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 sql

require_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 &gt;&gt;"></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 dados

require_once("funcoes/uteis.php");

//conectar ao banco

connect("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 travei

outra que é o form para enviar a mensagem:

<?php

require_once("funcoes/uteis.php");

//conectar ao banc

connect("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)

biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Muito bonito o seu código mas ele não tem muito a ver com o que você está em dúvida agora... biggrin.gif

Eu quero que você pense em como fazer, se eu te disser como e te passar a estrutura pronta você não aprende nada... rolleyes.gif

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?

Link para o comentário
Compartilhar em outros sites

  • 0

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 certo

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?

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?)

Link para o comentário
Compartilhar em outros sites

  • 0

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? unsure.gif

Link para o comentário
Compartilhar em outros sites

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0

Faz +- assim:

tabela usuarios:

id_usuario

nome_usuario

numero_post => numero de post do membro

tipo_membro => se é moderador,membro etc...

data_cadastro

email

img_avatar

outros dados se quiser colocar do usuario etc...

tabela mensagens

id_mensagem

titulo_mensagem

fk_usuario_remetente

fk_usuario_destinatario

mensagem

data_mensagem

perceba que o importante são essas informações com isso da pra montar um esquema legal

tipo uma função que detecta a entrada do usuario ou troca de pagina e verifica se tem mensagem pra ele e envia pra ele

deu pra entender +- ?

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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 coisa

mas 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 wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

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 wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0
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 wink.gif

beleza você também esta certo mas eu fiz assim porque já que era tudo no mesmo banco

e não teria necessidade de mandar 2 msgs mas sua logica também esta certa

só que no caso do email o remetente e nem o destinatario compartilha o mesmo banco

mas valeu, vamos tentar ajudar nosso amigo ai abraços

Link para o comentário
Compartilhar em outros sites

  • 0

id_mensagem

fk_usuario_remetente

fk_usuario_destinatario

titulo_mensagem

mensagem

data_cadastro

mensagem_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!

Link para o comentário
Compartilhar em outros sites

  • 0

tabela usuarios

id_usuario

nome

senha

numero_posts

fk_grupo

nivel

data_cadastro

img_avatar

tabela grupos

id_grupo

grupo

essa é minha logica tenta montar a sua em cima das ideias já postadas

eu fiz isso hj porque você tava com duvidas, mas da pra fazer algo bem melhor e com calma wink.gif

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,3k
    • Posts
      652,6k
×
×
  • Criar Novo...