Jump to content


Photo

Agrupando Dados


  • Faça o login para participar
5 replies to this topic

#1 jrbranquinho

jrbranquinho

    Turista

  • Usuários
  • 37 posts
  • Sexo:Não informado
  • Localidade:Pires do Rio

Posted 03/03/2006, 08:04

Tenho um scrip de noticias que funciona perfeitamente, só que não consigo agrupar as noticias por uma data especifica, tipo:

01/03/2006
07:48:25 - Fórum WMOnline detém os melhores programadores
04:53:12 - Brasil detém a maior taxa de juros do mercado

28/02/2003
07:48:25 - Uma outra noticia
04:53:12 - Uma outra notícia aqui também e assim por diante

Se alguém tiver alguma noção de como se faz isso, posta ae pra gente :P (y)
(Pra se ter uma ideia completa, tipo o site do Estadao) vlw!!!

#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 03/03/2006, 08:09

só na query vc ordenar por data em ordem decrescente não funfa não? ai vc faz um script pra dar um espaçamento entrar as datas... mas o que tem q fazer é isso, ORDER BY data DESC...

FLws...
(y) Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 gonacts

gonacts

    "Agora eu tb tenho um Tux..." =D

  • Usuários
  • 1030 posts
  • Sexo:Não informado

Posted 03/03/2006, 08:09

use a cláusla GROUP BY na sua query :D
"Ninguém é tão inteligente que não possa aprender e ninguém é tão burro que não possa ensinar.."
"As dúvidas engrandecem nossa sabedoria, mas não basta somente tirá-las, temos que entendê-las"

#4 jrbranquinho

jrbranquinho

    Turista

  • Usuários
  • 37 posts
  • Sexo:Não informado
  • Localidade:Pires do Rio

Posted 03/03/2006, 17:15

Já utilizei tanto o group by como o order by e eles somente listam os arquivos assim:
01/mm/YY - hh:mm:ss - Titulo 1
01/mm/YY - hh:mm:ss - Titulo 2
30/mm/YY - hh:mm:ss - Titulo 3

quando o pretendido seria assim:
01/mm/YY
hh:mm:ss - Titulo 1
hh:mm:ss - Titulo 2

30/mm/YY
hh:mm:ss - Titulo 3

com certeza não sou o único a ter essa dúvida.
Mesmo assim vlw!

#5 B!ö$

B!ö$

    12 Horas

  • Usuários
  • 129 posts
  • Sexo:Masculino
  • Localidade:Randômico

Posted 03/03/2006, 18:31

Usei o if quando precisei observe:

  $sql = mysql_query("SELECT DATE_FORMAT(data, '%d-%m-%Y %h:%m:%s') as data FROM noticias ORDER by data DESC");
  while($row = mysql_fetch_assoc($sql))
  {
  $data = $row['data'];
  $data = explode(" ", $data);
  $e_data = date("d-m-Y",mktime(0, 0, 0, 3, 3, 2006));//Data que quero que seja exibida, aconselho criar um Array caso ouver muitas datas....
  if($data[0]==$e_data)
  {
  print $data[0]."<br>";
  print $data[1];
  }
  }

Edição feita por: B!ö$, 03/03/2006, 18:34.


#6 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 03/03/2006, 21:08

Testado e aprovado...:

<?php

    mysql_connect();
    mysql_select_db("teste");
    
    $Consulta = mysql_query("
        SELECT *, DATE_FORMAT(datahora, '%d/%m/%Y') AS data,
               DATE_FORMAT(datahora, '%H:%i:%s') AS hora
        FROM noticia
        ORDER BY datahora DESC
    ") or die(mysql_error());
    

    $ultimaData = '';
    
    while ($rs = mysql_fetch_assoc($Consulta)) {
    
        if ($rs['data'] != $ultimaData) {
            print "- {$rs['data']}<br />";
        }
        
        print "{$rs['hora']} - {$rs['titulo']}<br />";

        $ultimaData = $rs['data'];
    }

?>

O lance é gravar no loop sempre a última data exibida, e comparar se a próxima é igual a anterior, se for, não exibe, exibindo assim a data distintamente.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq