Jump to content
MK2

Ordenação de mensagens

Recommended Posts

MK2

Boas.

Tenho uma tabela com mensagens e uma tabela de amigos.

Quando é para ordenar, eu quero que seja ordenado por id que é auto-incremental, ou seja, por ordem de chegada...

O problema é que eu quero que só apareça as mensagens que tenho como amigo...

O que eu tenho é:

$result5 = mysql_query("SELECT * FROM mensagens ORDER by id_msg desc");



//Verifica se algum registo foi devolvido
$numero_registos5 = mysql_num_rows($result5);



while($row5 = mysql_fetch_array($result5))
{

$result = mysql_query("SELECT * FROM `amigos`");



//Verifica se algum registo foi devolvido
$numero_registos = mysql_num_rows($result);



while ($row = mysql_fetch_array($result))
{
if ($row['amigo'] == $row5['username'])
{
echo "sim";
}
else 
{
echo "não";
}
}

O que está a acontecer é que ele está a agrupar por utilizador, e eu queria que aparecesse por ordem de chegada...

Eu percebo porque é que está a acontecer isto... Mas não consigo arranjar solução para isto...

Ajuda por favor.. Ando à mais de uma semana para resolver isto....

Aguardo resposta..

Obrigado"!


Cumps;Mk2_______________________________________________Se não fosse o C estaríamos a usar Pasal, obol e Basi ...

Share this post


Link to post
Share on other sites
brunoais

Talvês algo do genero:

SELECT * FROM mensagens
INNER JOIN  `amigos` ON  amigos.amigo = mensagens.username
ORDER by id_msg desc

Pelo que eu percebi é isto que queres


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
MK2

Não estou a conseguir aplicar isso.

Eu tenho uma tabela de amigos que tem o id, o username (meu) e o nome do amigo.

Depois as mensagens são enviadas para todos.. Todas as pessoas que estiverem inscritas e forem amigas dessa pessoa consegui ver... Agora o problema é que primeiro tenho de saber se essa pessoa é minha amiga para poder mostrar...

É do estilo:

username: mk2          amigo: brunoais

username: brunoais          amigo: alguem

Eu posso ver a tua mensagem mas não posso ver a do alguém...


Cumps;Mk2_______________________________________________Se não fosse o C estaríamos a usar Pasal, obol e Basi ...

Share this post


Link to post
Share on other sites
brunoais

Da maneira como estás a pedir é muito complicado sem saber exatamente como as tabelas estão feitas...

Se pudesses mostrar o resultado de um export delas (sem os dados atuais nelas, só a estrutura) facilitaria imenso.

De qq modo:

SELECT * FROM mensagens
INNER JOIN  `amigos` ON  
	amigos.username = mensagens.remetente AND
		 (amigos.amigo = meuUsername OR amigos.username = meuUsername )
WHERE mensagens.remetente = meuUsername
ORDER by id_msg desc

Isto parece ser uma pequena martelada mas, sem mais info de como a tua DB está, não faço ideia como melhorar este código.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
MK2

As tabelas estão assim:

Tens a tabela amigos que tem o id, o username (teu) e depois o amigo (username do teu amigo)

depois tenho a tabela mensagens que tem:

id_mensagem, username, texto, etc....

O que eu quero é que ele vá procurar na tabela amigos onde está o teu nome e agarrar no nome do "amigo" e procure nas mensagens com esse nome... Já consegui fazer isso, mas como ele primeiro procura na tabela amigos ele vê o nome e procura na tabela mensagens todas as mensagens que existem com aquele nome. e depois ele faz isso para os outros... Só que o que acontece é que se eu tiver mensagens intercaladas com dois nomes diferentes ele agrupa por nomes.

Exemplo:

Tabela amigos:

1 - mk2 - brunoais

2 - mk2 - alguem

Tabela mensagens:

1 - brunoais - olá

2 - alguem - olé

3 - brunoais - tudo bem?

4 - alguem - sim

O que ele faz é:

1 - brunoais - olá

3 - brunoais - tudo bem?

2 - alguem - olé

4 - alguem - sim

Porque primeiro ele verifica nos amigos e passa logo para as mensagens à procura de todas as mensagens com o nome que ele encontrou...

Eu queria que me desse por uma ordem de chegada sem agrupar.


Cumps;Mk2_______________________________________________Se não fosse o C estaríamos a usar Pasal, obol e Basi ...

Share this post


Link to post
Share on other sites
pedroserra

Dúvida: porque é que não incluis um campo timestamp na mensagem e usas isso depois para ordenar?


Ah e tal não sei quê...

Share this post


Link to post
Share on other sites
MK2

E o resto? ele tem data... mas é a mesma coisa que ordenar por id que está incremental... A minha dúvida não é essa.. Porque isso já eu fiz... Isto não é tão simples como pensas... Porque eu tenho primeiro que ver quem são os meus amigos e ele corre a lista vÊ um e procura nas mensagens as que tem o nome que encontrou... Ele assim está a ordenar por username que ele encontra nos amigos..............

:wallbash:


Cumps;Mk2_______________________________________________Se não fosse o C estaríamos a usar Pasal, obol e Basi ...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.