Jump to content
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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 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 ?
    • By 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
    • By 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
       

    • By 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.
    • By 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? 

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.