• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gurzi

Ajuda - Sistema Interno de mensagens

24 mensagens neste tópico

Pessoal, estou a fazer um sistema Interno de Mensagens em PHP 4.43 com OOP e queria ajudas a estreturar ideias.

A ideia é que cada cliente pode enviar uma mensagem através da sua àrea privada a um administrador , ou seja, vai existir um report da situação actual do projecto em que a empresa está a desenvolver ao cliente muito intensivo o que faz com que os utilizadores da empresa trabalhem.

Ou seja, como são admins, vão ambos partilhar a mesma caixa de mensagens sendo que cada cliente só pode enviar mensagens á administração da empresa.

Pensei em algo assim em classes :

SUPER CLASS - Caixa de Entrada

SUb Class de Caixa de Entrada - Mensagem

Sub Class de Mensagem - Mensagem Recebida

Sub Class de Mensagem - Mensagem Enviada

Está bem pensado ??

Alguem me quer dar umas dicas ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens de pensar assim

USER permissão =0 = empregado acesso a enviar para user de nivel =1

USER permissão =1 = admin acesso a enviar para todos os users

depois caixa de entrada

USER login id=2 confirmas com uma sessão se ele tá a ver só mesmo a dele

ai dá para ler as mensagens e depois é seguir este raciocínio se quiseres algo "fiável" a meu ver claro   

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por acaso não tinha pensado nisso como sessões..

Tinha feito um esquema relacional que contem as seguintes tabelas :

Cliente / Admin / Mensagem / Caixa de Mensagens / MsgEnviada / MsgRecebida

Em que um cliente ou admin escreve uma mensagem e 1 mensagem é recebida pela caixa de mensagens..

Na tabela mensagens vai toda a info mas depois ao chegar a caixa de mensagens é divido em msg recebida ou msg enviada.. assim não preciso de sessoes porque cada msg tem um ID de emissor e receptor

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma empresa de Web design que comunica com os seus clientes através de mensagem privadas.

Cada cliente terá a sua caixa de mensagens onde poderá ver as Mensagens Enviadas e as mensagens recebidas.

Assim vai haver um acompanhamento do projecto mt maior por parte do cliente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah ok então como estava a dizer que com sessões era muito mais fácil porque se o cliente faz o login para a "Área de Cliente" e assim tipo facilitava-te o trabalho

ex

tabela mensagens

titulo

de

para

msg

tipo

data... essas coisas e depois no tipo metias se era enviada ou recebida

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estas a tentar fazer algo parecido com as mensagens privadas do SMF e do PHPBB ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exactamente, é mesmo isso que estou a tentar fazer!!!

Mas não percebi como querem fazer com as sessões

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah ok então como estava a dizer que com sessões era muito mais fácil porque se o cliente faz o login para a "Área de Cliente" e assim tipo facilitava-te o trabalho

ex

tabela mensagens

titulo

de

para

msg

tipo

data... essas coisas e depois no tipo metias se era enviada ou recebida

Gostei dessa organização, mais simples e funcional, vou aplicar.

Resta-me perceber isso das sessões

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim sim, lol peço desculpa, não estava a associar.

é que a sessão está incluido no sistema de login, pensava que precisava de transportar alguma data pelas sessões.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pronto então agora acho que é simples de fazer se conheceres o sistema de login bem fazes o que quiseres deles

a estrutura que te dei como hei de dizer foi feita "em cima do joelho" lol mas se quiseres posso te ajudar nesse campo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece-me eficaz. mas se tiveres outra ideia..

Eu tinha aquela mais complexa mas perco-me um bocado a gerir db.

Não faço muito bem as ligações e mt menos as optimizações :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes apenas utilizar 2 ou 3 tabelas por isso acho que a ideia que tinhas era demasiado complexa para o que queres afinal não é nenhum HI5 ou YouTube que tem biliões de users 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, estava a tentar na verdade fazer isto com Objectos. Queria aprender a usar Objectos e pensei que seria util.

Tens alguma ideia em relação a OOP como fazer isto ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

OOP só em PHP5 acho eu, e ainda não me actualizei em relação a isso mas tá para breve hehe agora tou com algumas coisas em mente primeiro, mas se surgir um projecto que precise de OOP (PHP5) terei de actualizar-me mais depressa. Mas como ando a aprender C# e é OOP pode ser que ajude a isso.

Portanto sobre oop ainda na te posso dizer nada mas podes ler um pouco no www.php.net

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou a ter uns erros marados e não estou apanhar nada

include("settings.php");
       $connect = mysql_connect($servidor, $utilizador, $password);
       $selectdb = mysql_select_db($bd);
       $query = "select de,titulo FROM sky_mensagem";

      $doQuery = mysql_query($query);
        while($row = mysql_fetch_row())
        {
            echo "<a href='#'>De: $row[1]  Assunto:$row[2]  </a><br>";
        }

Warning: Wrong parameter count for mysql_fetch_row() in /home/ptattacks.com/www/SkyWorks/teste.php on line 22

line 22 é o $row

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fazer isso em oop não é dificil..... explicar como fazer em OOP é que é dificil. Deixa-me ver se consigo resumir...

Crias uma classe por exemplo "iMail" depois pensas "Quais são as opções que o sistema de mail vai ter ?" (exemplo: Enviar Mensagem, Ler mensagens Recebidas, Apagar Mensagem, Mensagens Enviadas, Responder, Contactos )

Depois só precisas de criar a classe

class iMail {

function EnviarMsg ( $para, $assunto, $mensagem ) {
           //Executas uma query a tabela das mensagens... inseres a mensagem o assunto etc 
   }
  
  function Recebidas () {
       //Fazes uma conexão a mysql e tal depois executas um query a tabela das mensagens para veres se existem mensagens da data de hoje...
  }
   
  function LerEmail ( $MsgID ) {
     //Executas um query e tal selecionas a mensagem utilizas um ID para identificar a mensagem que tem que ler e tal...
   }
   
   function Apagar ( $MsgID ) {
    //Executas um query para apagar a mensagem da base de dados "DELET mensagem FROM tabela WHERE id=xx' algo assim
   }
//Adicionas mais funções e tal umas vars se necessario
}  

 

Depois só precisas de utilizar um código para controlar a classe

//Isto é um simples exemplo mas muito simples mesmo

if(isset($_POST['ApagarMsg'])) {
        if(iMail::Apagar( $_POST['MsgID'] )) {
              echo "Mensagem apagada";
}
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou a ter uns erros marados e não estou apanhar nada

include("settings.php");
       $connect = mysql_connect($servidor, $utilizador, $password);
       $selectdb = mysql_select_db($bd);
       $query = "select de,titulo FROM sky_mensagem";

      $doQuery = mysql_query($query);
        while($row = mysql_fetch_row())
        {
            echo "<a href='#'>De: $row[1]  Assunto:$row[2]  </a><br>";
        }

Warning: Wrong parameter count for mysql_fetch_row() in /home/ptattacks.com/www/SkyWorks/teste.php on line 22

line 22 é o $row

Esqueceste-te de colocar a variável $doQuery dentro da função mysql_fetch_row();  "mysql_fetch_row( $doQuery );"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou a ter uns erros marados e não estou apanhar nada

include("settings.php");
       $connect = mysql_connect($servidor, $utilizador, $password);
       $selectdb = mysql_select_db($bd);
       $query = "select de,titulo FROM sky_mensagem";

      $doQuery = mysql_query($query);
        while($row = mysql_fetch_row())
        {
            echo "<a href='#'>De: $row[1]  Assunto:$row[2]  </a><br>";
        }

Warning: Wrong parameter count for mysql_fetch_row() in /home/ptattacks.com/www/SkyWorks/teste.php on line 22

line 22 é o $row

O mysql_fetch_row recebe o resultado do mysql_query... e tu não lhe estás a passar... é só ler o erro e procurares no php.net :(

Neste caso a variável chama-se:  $doQuery

EDIT: Parece q n fui rápido o suficiente :$

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu ponho mas ele diz que o resource nao e valido

Coloca  "echo mysql_error();" para veres o erro da MySQL acho que há um erro na MySQL

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

os sistemas de mensagem que costumo colocar nos meus projectos a tabela costuma ser deste género:

id, titulo, mensagem, data, de, para, de_apagado[boolean] , para_apagado [boolean]

de_apagado e para_apagado é para eu evitar de criar duas tabelas para enviadas e recebidas.

Ou seja quando é enviada uma mensagem estes 2 campos estão a zeros, se o gajo que recebeu apagar a mensagem e o gajo que enviou já tenha apagado a mensagem também ele remove a mensagem da tabela caso contrario mete o para_apagado a true e vice-versa.

Nao sei se me fiz entender, qualquer duvida é só dizer :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora