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

    • By marcelocardoso
      Pessoal!
      Pesquisei bastante no forum e na internet, porém não consegui realizar o que preciso.
      Vejam se conseguem me dar uma luz para resolver.

      1) preciso ao exibir no RECORDSET as noticias, mas não repetindo as DATAS;
      2) preciso ao exibir agrupar as noticias sem repetição, mas mostrando todas as que pertecem a DATA acima;
      2a) tipo: 14:08:1980 - exibir noticia 1, exibir noticia 2, exibir noticia 3 (que no caso, aí teria dentro do banco 3 datas para o dia 14:08:1980, mas somente mostrar 1 vez a data e as 3 noticias.
      3) depois sucessivamente as demais, que daí faço com o WHILE.

      Tentei usar distinct, mas também não achei o modo certo.
      Alguma luz com exemplo, agradeço.

      Obrigado.
×

Important Information

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