Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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...
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...
>
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?
é 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)); ?>>
é 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:
>
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.