Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Erlen Fiuza

agrupar registros igual o msn

Recommended Posts

Olá galera beleza,

 

Trabalho um pouco com php, mas estou com um probleminha no select do mysql...

 

eu quero agrupar os resultados igual ao msn, já tentei com group by mas não tá dando certo, com distint também não funcionou.

 

O q acontece é que quando agrupo ele só mostra a última mensagem do usuário, mas o que quero é que mostre a última e conte quantas ele enviou por último e em seguida, até que o outro usuário envie, o q seria o fim dessa contagem e o início de outra.

 

Por exemplo:

 

carlos: aew galera!

carlos: tudo beleza?

marcos: beleza e você?

carlos: massa!

 

 

neste exemplo está aparecendo assim

 

carlos: aew galera (3 mensagens)

marcos: beleza e você? (1 mensagem)

 

só que o q quero é isso:

 

carlos: aew galera! (mais 1 mensagem)

marcos: beleza e você?

carlos: massa!

 

Deu pra entender...

 

Valeu ai. Se alguém puder me ajudar agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá galera beleza,

 

Trabalho um pouco com php, mas estou com um probleminha no select do mysql...

 

eu quero agrupar os resultados igual ao msn, já tentei com group by mas não tá dando certo, com distint também não funcionou.

 

O q acontece é que quando agrupo ele só mostra a última mensagem do usuário, mas o que quero é que mostre a última e conte quantas ele enviou por último e em seguida, até que o outro usuário envie, o q seria o fim dessa contagem e o início de outra.

 

Por exemplo:

 

carlos: aew galera!

carlos: tudo beleza?

marcos: beleza e você?

carlos: massa!

 

 

neste exemplo está aparecendo assim

 

carlos: aew galera (3 mensagens)

marcos: beleza e você? (1 mensagem)

 

só que o q quero é isso:

 

carlos: aew galera! (mais 1 mensagem)

marcos: beleza e você?

carlos: massa!

 

Deu pra entender...

 

Valeu ai. Se alguém puder me ajudar agradeço...

 

Depende, poste a estrutura das suas tabelas. E nesse caso, você tem que pensar assim:

 

"Eu vou AGRUPAR todas as mensagens da pessoa cujo o ID é tal".

 

Exemplo:

 

SELECT COUNT(id_mensagem) FROM mensagem LEFT JOIN usuario ON (mensagem.id_usuario = usuario.id_usuario)

 

Ou algo mais ou menos assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Dii, mas ainda não é bem isso. Vou tentar esclarecer melhor:

 

Tenho uma tabela no banco q armazenam mensagens dos usuários:

 

idr | de | msn

1- | carlos | teste de mensagem

2 | carlos | teste de mensagem2

3 | marcos | testedsfdslçfksdlçkflç

4 | carlos | fsldfjdsklfjkldsajflkds

 

ai eu quero mostrar as mensagens assim:

 

carlos diz:

-fsldfjdsklfjkldsajflkds

 

marcos diz:

-testedsfdslçfksdlçkflç

 

carlos diz:

-teste de mensagem2

-teste de mensagem

 

 

quando o 'carlos' enviou duas mensagens em seguida, aparecem agrupadas... igual ao msn.

 

tentei algumas coisas aqui mas até agora nada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Dii, mas ainda não é bem isso. Vou tentar esclarecer melhor:

 

Tenho uma tabela no banco q armazenam mensagens dos usuários:

 

idr | de | msn

1- | carlos | teste de mensagem

2 | carlos | teste de mensagem2

3 | marcos | testedsfdslçfksdlçkflç

4 | carlos | fsldfjdsklfjkldsajflkds

 

ai eu quero mostrar as mensagens assim:

 

carlos diz:

-fsldfjdsklfjkldsajflkds

 

marcos diz:

-testedsfdslçfksdlçkflç

 

carlos diz:

-teste de mensagem2

-teste de mensagem

 

 

quando o 'carlos' enviou duas mensagens em seguida, aparecem agrupadas... igual ao msn.

 

tentei algumas coisas aqui mas até agora nada...

 

Então.

 

Você pode verificar se ele mandou 2 mensagens em seguida sem nenhuma mensagem da pessoa com quem ele esteja conversando em uma escala de tempo. É isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é isso mesmo só q não queria entrar nessa questão de tempo. será que não tem outro jeito? Tipo usando 2 selects ou outra coisa qualquer. Estou tentando colocar um select geral pra todos os recados e outro pra verificar se ele enviou mais de uma mensagem seguinda, mas não ta dando certo ainda...

 

saca só o código

 

<?php

mysql_select_db($database_conectar, $conectar);

$query_recados = sprintf("SELECT * FROM recados GROUP BY de ORDER BY idr DESC");

$recados = mysql_query($query_recados, $conectar) or die(mysql_error());

$row_recados = mysql_fetch_assoc($recados);

$totalRows_recados = mysql_num_rows($recados);

?>

 

 

<?php do { ?>

 

<table width="700" border="0">

<tr>

<th width="143" scope="col"><?php echo $row_recados['idr']; ?></th>

<th width="84" scope="col"><?php echo $row_recados['de']; ?></th>

<th width="459" scope="col"><?php echo $row_recados['msn']; ?></th>

</tr>

</table>

 

<?php

mysql_select_db($database_conectar, $conectar);

$query_de = sprintf("SELECT * FROM recados ORDER BY idr DESC");

$de = mysql_query($query_de, $conectar) or die(mysql_error());

$row_de = mysql_fetch_assoc($de);

$totalRows_de = mysql_num_rows($de);

?>

<?php do { ?>

<li><?php echo $row_de['msn']; ?></li>

<?php } while ($row_recados['de'] = $row_de['de']); ?>

 

<?php } while ($row_recados = mysql_fetch_assoc($recados)); ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

é isso mesmo só q não queria entrar nessa questão de tempo. será que não tem outro jeito? Tipo usando 2 selects ou outra coisa qualquer. Estou tentando colocar um select geral pra todos os recados e outro pra verificar se ele enviou mais de uma mensagem seguinda, mas não ta dando certo ainda...

 

saca só o código

 

<?php

mysql_select_db($database_conectar, $conectar);

$query_recados = sprintf("SELECT * FROM recados GROUP BY de ORDER BY idr DESC");

$recados = mysql_query($query_recados, $conectar) or die(mysql_error());

$row_recados = mysql_fetch_assoc($recados);

$totalRows_recados = mysql_num_rows($recados);

?>

 

 

<?php do { ?>

 

<table width="700" border="0">

<tr>

<th width="143" scope="col"><?php echo $row_recados['idr']; ?></th>

<th width="84" scope="col"><?php echo $row_recados['de']; ?></th>

<th width="459" scope="col"><?php echo $row_recados['msn']; ?></th>

</tr>

</table>

 

<?php

mysql_select_db($database_conectar, $conectar);

$query_de = sprintf("SELECT * FROM recados ORDER BY idr DESC");

$de = mysql_query($query_de, $conectar) or die(mysql_error());

$row_de = mysql_fetch_assoc($de);

$totalRows_de = mysql_num_rows($de);

?>

<?php do { ?>

<li><?php echo $row_de['msn']; ?></li>

<?php } while ($row_recados['de'] = $row_de['de']); ?>

 

<?php } while ($row_recados = mysql_fetch_assoc($recados)); ?>

 

Acho que não, e mesmo assim... Toda aplicação de recados precisa ter a data de inserção do recado, ai você compara se a data de inserção do tipo for maior ou igual do amigo, é porque o amigo Não postou , então agrupa. Caso contrário, agrupa normalmente. :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.