Ir para conteúdo
Danado_

Group export excel

Recommended Posts

Galera como separo por grupos e pulo linha?
por exemplo: (anexo)

tenho isso até o momento: 
 

$lista = mysqli_query($con, "SELECT * FROM lista_convidados WHERE cliente = '$cliente' and lado = 'Noiva' order by responsavel asc");
while($dados = mysqli_fetch_assoc($lista)){
$html .= '<tr>';
$html .= '<td>'.$dados["responsavel"].'</td>';
$html .= '<td>'.$dados["convidado"].'</td>';
$html .= '<td>'.$dados["tipo"].'</td>';
$html .= '<td>'.$dados["tel_convidado"].'</td>';
$html .= '</tr>';
}

esta assim.png

 

Tem que ficarr assim: (com essa quebra de linha)

Screenshot_1.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenho no meu bd tabela qtd_convidados que no caso ele conta da seguinte forma:

responsavel          | qtd_convidados | convidado
adelino e familia  | 2                           | fulano 
adelino e familia  | 2                           | bertano

se eu fazer um FOR da certo? pensei da seguinte forma:

$a = 1; $a <= $qtd_convidados; a++


acontece que faz isso:
adelino e familia  | 2                           | fulano 
adelino e familia  | 2                           | fulano 
adelino e familia  | 2                           | bertano
adelino e familia  | 2                           | bertano

 

alguem tem alguma logica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer uma comparação simples.

 

De forma grossa seria basicamente assim, exemplo:

<?php
while($row_sql = mysqli_fetch_array($sql)){ // Após leitura do BD, faz um while para exibir toda a lista
	echo $row_sql['responsavel'].' - '.$row_sql['convidado']; // Imprime o resultado
}
?>

Isso exibiria toda a lista, tenha um ou mais convidados. Agora vi que você quer exibir somente os que tem mais de um convidado deixando o espaço em branco do que tem apenas um, então você pode fazer uma comparação antes da impressão.

 

Essa é uma forma grossa do código, você pode adaptar ao seu gosto:

<?php
while($row_sql = mysqli_fetch_array($sql)){ // Após leitura do BD, faz um while para exibir toda a lista
	if($row_sql['qtd_convidados'] > 1) echo $row_sql['responsavel'].' - '.$row_sql['convidado']; // Imprime o resultado com mais de um convidado
	else echo '<br />'; // Não imprime nada e pula a linha
}
?>

 

Espero ter ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 minutos atrás, FelipeFlorindo disse:

<?php while($row_sql = mysqli_fetch_array($sql)){ // Após leitura do BD, faz um while para exibir toda a lista if($row_sql['qtd_convidados'] > 1) echo $row_sql['responsavel'].' - '.$row_sql['convidado']; // Imprime o resultado com mais de um convidado else echo '<br />'; // Não imprime nada e pula a linha } ?>

 

Então man!
se eu fazer essa condição de > 1 além de eliminar os grupos que contem 1 também fica pulando linha tipo assim:

responsavel          | qtd_convidados | convidado
adelino e familia  | 2                           | fulano 
---------------------------    - ----------------------- --- -------------linha pulada
adelino e familia  | 2                           | bertano
---------------------------    - ----------------------- --- -------------linha pulada

o ideal é que fique assim:
responsavel          | qtd_convidados | convidado
adelino e familia  | 2                           | fulano 
adelino e familia  | 2                           | bertano
---------------------------    - ----------------------- --- -------------linha pulada
maria e familia     | 3                           | ciclano
maria e familia     | 3                          | ciclano2
maria e familia     | 3                          | ciclano3
---------------------------    - ----------------------- --- -------------linha pulada
.... assim por diante, saka?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, o ultimo código que apresentei só pula caso o responsável tenha apenas um convidado.

 

Agora caso tenha inserido na tabela os responsáveis e convidados de forma desordenada, o nome dos responsáveis não sairão em grupo, então pra corrigir você deve ordenar a tabela durante a conexão.

$sql = "SELECT responsavel, qtd_convidados, convidado FROM tabela ORDER BY responsavel";

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao ta dando certo man!

preciso contar e pular linha:

tenho grupos com aleatorios tipo:
grupo 1 - 5 convidados
grupo 2 - 8 convidados

preciso listar esse convidados e pular linha, ficando assim:
responsavel          | qtd_convidados | convidado
adelino e familia  | 2                           | fulano 
adelino e familia  | 2                           | bertano
---------------------------    - ----------------------- --- -------------linha pulada
maria e familia     | 3                           | ciclano
maria e familia     | 3                          | ciclano2
maria e familia     | 3                          | ciclano3
---------------------------    - ----------------------- --- -------------linha pulada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por brunoogm
      Pessoal tenho o seguinte select no mysql
       
      SELECT SUM(ValorTotal) as Total_Mes, YEAR(DataPedido) as Ano,
                                                      CASE extract(MONTH from DataPedido)
                                                      WHEN 1 THEN 'Janeiro'
                                                      WHEN 2 THEN 'Fevereiro'
                                                      WHEN 3 THEN 'Março'
                                                      WHEN 4 THEN 'Abril'
                                                      WHEN 5 THEN 'Maio'
                                                      WHEN 6 THEN 'Junho'
                                                      WHEN 7 THEN 'Julho'
                                                      WHEN 8 THEN 'Agosto'
                                                      WHEN 9 THEN 'Setembro'
                                                      WHEN 10 THEN 'Outubro'
                                                      WHEN 11 THEN 'Novembro'
                                                      WHEN 12 THEN 'Dezembro'
                                                  END AS mes
                                                  from comanda Where Year(DataPedido) = year(curdate()) and CodigoSituacao = 2 OR Year(DataPedido) = (year(now())-1) and CodigoSituacao = 2
                                                  group by mes, YEAR(DataPedido)
                                                  limit 0,12
       
      E ele me retorna a seguinte situação : 
       
      Total_Mes      Ano         mes
      555.00            2018       Agosto
      310.00            2019       Agosto
      150.00            2019       Fevereiro
      777.00            2018       Janeiro
      100.00            2019       Janeiro
      70.00             2019         Maio
       
      E no caso eu gostaria de omitir os registros que NÃO se repetem, ou seja, retirar da consulta os resultados onde o mês só apareça uma vez (maio e fevereiro)
      Preciso que o resultado seja o seguinte :
       
      Total_Mes      Ano         mes
      555.00            2018       Agosto
      310.00            2019       Agosto
      777.00            2018       Janeiro
      100.00            2019       Janeiro
       
      Alguém tem uma  ideia de como fazer isso ?
    • Por reginaldo123
      quero fazer uma consulta que retorna as ultimas mensagens por data e agrupa pelo id_an

      $query="SELECT id_mensagem ,id_an,id_usuario,mensagem,data,id_p FROM mensagem WHERE  id_usuario='{$id_usuario}' ORDER BY data desc
       GROUP by id_an";
      mas esta dando erro a consulta sql
    • Por alekaspary
      Bom dia Amigos.
      Preciso fazer uma consulta na tabela baterias que possui as colunas (id, voltagem, reservatorio_id, data) em que me retorne a ultima voltagem gravada no banco de cada reservatório.
       
      OBS:
      1- Usando o ORDER BY juntamento com o GROUP BY, a consulta retorna a voltagem mais antiga gravada no banco;
      2 - LIMIT não pode ser usado, já que serão vários reservatórios a serem consultados;
      3 - Já tentei utilizar o MAX(data), a consulta me retorna a data mais alta, porém com a voltagem mais antiga;
       
      EM anexo imagem com valores fictícios na tabela
       

    • Por GudaEevSo
      Bom dia,
       
      Preciso fazer a soma da coluna QT_REAL onde a soma das linhas não podem passar um determinado valor (NR_CAMPO) . Essa soma deve ser feita validado o NR_CICLO, NR_OP, DS_NIVEL e CD_COR onde será agrupado as linhas até a QT_REAL for menor ou igual que o NR_CAMPO.
       
      Como está hoje:

       
      Como deveria ficar:

       
      Colunas da tabela:
      NR_CICLO,
      NR_OP,
      DS_NIVEL,
      NR_CAMPO = CAMPO LIMITADOR - QUANTIDADE DA COLUNA SOMADA NÃO PODE ULTRAPASSAR ESSE VALOR.
      CONT = NUMERO DE LINHAS
      CD_COR
      QT_REAL = QUANTIDADE A SER SOMADA.
    • Por Inquieto
      Bom dia,
      Tenho a seguinte consulta (que funciona perfeitamente):
      SELECT 
      i.desc_com,
      i.id_produto,
      SUM(i.quantidade_com)  AS t,
      p.id_pro,
      p.desc_pro,
      g.quantidade AS f,
      (i.quantidade_com * g.quantidade) AS total
      FROM
      tb_intenscomposicao i,
      tb_produto p
      INNER JOIN 
      tb_itens_pedido g ON (g.produto = p.desc_pro)
      WHERE
      p.id_pro = i.id_produto AND g.id_ped = 1
      GROUP BY i.id ORDER BY i.desc_com;
      Que me retorna o que está na imagem. Porém, digamos que para fabricar o produto "x" eu precise de 10 componentes "j", enquanto que para fabricar o produto "y" eu preciso de 45 "j" e, no meu pedido eu precise de 7 produtos x e 2 produtos y:
      COMPONENTE J    |  PRODUTO X                 7    70
      COMPONENTE J    |  PRODUTO Y                  2    90
      O resultado que obtenho é 70 de um e 90 de outro, o problema é que eu não consigo agrupar de forma que mostre corretamente as 160 unidades do componente "j". Alguma ideia? 

×

Informação importante

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