Jump to content


Photo

Problemas No Select Php


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

#1 Rodrigo Twister

Rodrigo Twister

    Novato no fórum

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

Posted 29/10/2010, 14:59

Caros amigos, tenho uma tabela com todos os compromissos de uma pessoa. Estou precisando exibir os dados desta tabela agrupados por cidade. Até aí tudo bem, usei um order by cidade e todos ficam em ordem, porém, sempre exibe novamente o nome da cidade. Gostaria que fosse exibido desta forma:

Hoje exibe assim:

RIO DE JANEIRO
teste 1
RIO DE JANEIRO
teste 2
RIO DE JANEIRO
teste 3

Quero que exiba assim:

RIO DE JANEIRO
teste 1
teste 2
teste 3

Alguém tem uma luz?

Edição feita por: Rodrigo Twister, 29/10/2010, 15:00.


#2 rsantana

rsantana

    Turista

  • Usuários
  • 50 posts
  • Sexo:Não informado
  • Localidade:Recife, PE

Posted 29/10/2010, 16:05

Caros amigos, tenho uma tabela com todos os compromissos de uma pessoa. Estou precisando exibir os dados desta tabela agrupados por cidade. Até aí tudo bem, usei um order by cidade e todos ficam em ordem, porém, sempre exibe novamente o nome da cidade. Gostaria que fosse exibido desta forma:

Hoje exibe assim:

RIO DE JANEIRO
teste 1
RIO DE JANEIRO
teste 2
RIO DE JANEIRO
teste 3

Quero que exiba assim:

RIO DE JANEIRO
teste 1
teste 2
teste 3

Alguém tem uma luz?


Ola Rodrigo,

Postando o código é mais fácil pra te ajudar...

#3 Rodrigo Twister

Rodrigo Twister

    Novato no fórum

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

Posted 29/10/2010, 16:29

Então, o meu código ainda está cru e resultando da forma acima, gostaria que fosse primeiro TODOS OS REGISTROS DE UMA CIDADE e depois TODOS OS REGISTROS DA OUTRA CIDADE, mas sempre com o título na frente. Segue o código hoje:

mysql_select_db($database_conn, $conn); 
	  $sql   =   mysql_query("select *,date_format(hora_inicio,'%H:%m') as hora_inicio,date_format(hora_fim,'%H:%m') as hora_fim from compromissos inner join cores on cores.cod_label=compromissos.cod_label WHERE data = '".$date."' order by compromissos.cod_label,hora_inicio") 
					   or die("ERRO NO COMANDO SQL");
	  $row   =  mysql_num_rows($sql);
	  
	  /*$sqlLabel   =   mysql_query("select * from label WHERE dataInicio = '".$date."' order by datahora") 
					   or die("ERRO NO COMANDO SQL");
	  $rowLabel   =  mysql_num_rows($sqlLabel);*/
     
	  if(mysql_num_rows($sql)){
	  
      ?>
            <td width="180" align="right" valign="top" bgcolor="#E5E5E5" title="visualizar"><a href="../admin/add_compromisso.php" rel="gb_page_center[690, 300]" title="Agendão - Amil"><?=$d?></a>
            
			<?
			while ($reg=mysql_fetch_array($sql))
			{
				$cod_compromisso=$reg['cod_compromisso'];
				$titulo=$reg['titulo'];
				$cidade=$reg['cidade'];
				$bgcolor=$reg['bgcolor'];
				$cor=$reg['cor'];
				$label=$reg['label'];
				$hora_inicio=$reg['hora_inicio'];
				$hora_fim=$reg['hora_fim'];
				$estado=$reg['estado'];
		   ?>
			
			<table width=100% border=0 cellspacing=0 cellpadding=0>
            <tr>
            <td bgcolor=<? echo $bgcolor; ?> height=16><b>&nbsp;<? echo $label; ?></b></td>
            </tr>
            <tr>
            <td height=5></td>
            </tr>
            </table>
			
			<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td valign="top"><a href="evento.php?cod_compromisso=<? echo $cod_compromisso; ?>" rel="gb_page_center[690, 300]" title="Agendão - Amil" style="color:<? echo $cor; ?>">&nbsp;<? echo $hora_inicio; ?> - <? echo $hora_fim; ?> - <? echo $titulo; ?></a></td>
			    
              </tr>
			  <tr>
                <td height="5" colspan="2"></td>
              </tr>
            </table>
		  <? } ?>

Edição feita por: Rodrigo Twister, 29/10/2010, 16:30.


#4 rsantana

rsantana

    Turista

  • Usuários
  • 50 posts
  • Sexo:Não informado
  • Localidade:Recife, PE

Posted 29/10/2010, 16:43

Então, o meu código ainda está cru e resultando da forma acima, gostaria que fosse primeiro TODOS OS REGISTROS DE UMA CIDADE e depois TODOS OS REGISTROS DA OUTRA CIDADE, mas sempre com o título na frente. Segue o código hoje:

mysql_select_db($database_conn, $conn); 
	  $sql   =   mysql_query("select *,date_format(hora_inicio,'%H:%m') as hora_inicio,date_format(hora_fim,'%H:%m') as hora_fim from compromissos inner join cores on cores.cod_label=compromissos.cod_label WHERE data = '".$date."' order by compromissos.cod_label,hora_inicio") 
					   or die("ERRO NO COMANDO SQL");
	  $row   =  mysql_num_rows($sql);
	  
	  /*$sqlLabel   =   mysql_query("select * from label WHERE dataInicio = '".$date."' order by datahora") 
					   or die("ERRO NO COMANDO SQL");
	  $rowLabel   =  mysql_num_rows($sqlLabel);*/
     
	  if(mysql_num_rows($sql)){
	  
      ?>
            <td width="180" align="right" valign="top" bgcolor="#E5E5E5" title="visualizar"><a href="../admin/add_compromisso.php" rel="gb_page_center[690, 300]" title="Agendão - Amil"><?=$d?></a>
            
			<?
			while ($reg=mysql_fetch_array($sql))
			{
				$cod_compromisso=$reg['cod_compromisso'];
				$titulo=$reg['titulo'];
				$cidade=$reg['cidade'];
				$bgcolor=$reg['bgcolor'];
				$cor=$reg['cor'];
				$label=$reg['label'];
				$hora_inicio=$reg['hora_inicio'];
				$hora_fim=$reg['hora_fim'];
				$estado=$reg['estado'];
		   ?>
			
			<table width=100% border=0 cellspacing=0 cellpadding=0>
            <tr>
            <td bgcolor=<? echo $bgcolor; ?> height=16><b>&nbsp;<? echo $label; ?></b></td>
            </tr>
            <tr>
            <td height=5></td>
            </tr>
            </table>
			
			<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td valign="top"><a href="evento.php?cod_compromisso=<? echo $cod_compromisso; ?>" rel="gb_page_center[690, 300]" title="Agendão - Amil" style="color:<? echo $cor; ?>">&nbsp;<? echo $hora_inicio; ?> - <? echo $hora_fim; ?> - <? echo $titulo; ?></a></td>
			    
              </tr>
			  <tr>
                <td height="5" colspan="2"></td>
              </tr>
            </table>
		  <? } ?>



Eita...

Imaginei que fosse consulta mais simples sem "inner join"

Normalmente eu faço duas consultas SQL
Ex.: Uma para CATEGORIA outra para ITEM.

Uma vez eu fiz um MENU de funcionários de uma agencia com php e duas seleções;
Na primeira seleção eu selecionei a categoria (Departamento = Criação) e listei todos que eram da categoria Criação.

--> Criação
Marcus
Fabio
George
--> Sign
Givaldo
Mauro
Sophia
--> Atendimento
Vanuza
Maria Cleuza
Carlos Oton

No momento não tenho esse codigo aqui no PC, mais é bem simples fazer...

Espero que tenha ajudado...

#5 linkbes

linkbes

    Novato no fórum

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

Posted 31/10/2010, 16:36

Rodrigo faça o seuguinte:

while ($reg=mysql_fetch_array($sql))
{
   if($titulo_anterior != $reg["titulo"])
   {
      echo $reg["titulo"];
      $titulo_anterior = $reg["titulo"];
   }
}

Faz a adaptaçao para vc usar mas a idéia é esta.

antes de imprimir o titulo, vc checa se ele não é o mesmo do anterior, se for passa reto
se for diferente imprime e armazena para a próxima volta.




1 user(s) are reading this topic

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

IPB Skin By Virteq