Jump to content
Marcos PP

Agrupar registros PHP, mostrando todos mas separando

Recommended Posts

Tenho uma tabela onde pego todos pedidos realizados no dia, porem mostro todos em uma tabela, ate ai tudo bem, mas o cliente precisa que seja agrupado por quem pediu, vou dar um exemplo,

Na minha tabela tenho 

ID_PEDIDO  |  ID_USER_PEDIDO |  PEDIDO

1                   |   20                           |   524

5                   |   52                           |   258

2                   |   35                           |   525

6                   |   52                           |   253

3                   |   20                           |   658

4                   |   20                           |   358

No resultado me aparece conforme consulta e me mostra todos os pedidos em ordem de pedido
SELECT * FROM pedidos  ORDER BY ID_PEDIDO ASC
 

Se eu colocar um GROUP BY ID_USER_PEDIDO vai agrupar os pedidos de acordo com o usuário e mo mostrar apenas 1


Eu preciso que seja mostrado todos eles porem agrupados na mesma linha da tabela
 

 <table id="datatable1" class="table display responsive ">
              <thead>
                <tr>
                  <th class="">ID</th>
                  <th class="">ID do usuario</th>
                  <th class="">Pedido</th>               
                </tr>
              </thead>
              <tbody>
                  
                  <?php
                    $sql = "SELECT * FROM pedidos  ORDER BY ID_PEDIDO ASC";
                    $result = $conn->query($sql);                    
                      while($row = $result->fetch_assoc()) {                        
                    
                  ?>
                <tr>
                  <td><?php echo $row["ID_PEDIDO"];?></td>
                  <td><?php echo $row["ID_USER_PEDIDO"];?></td>
                  <td><?php echo $row["PEDIDO"];?></td>
                </tr>
                <?php
               
                      }
                ?>
              </tbody>
            </table>

E que seja exibido conforme esta imagem
 

tabela.JPG

Share this post


Link to post
Share on other sites

Coloque como segundo filtro a coluna PEDIDO no GROUP BY 
 

SELECT * FROM pedidos  GROUP BY ID_USER_PEDIDO, PEDIDO
 ORDER BY ID_PEDIDO ASC


 

 

Em 13/07/2020 at 11:19, Marcos PP disse:

 

tabela.JPG



Para exibir neste formato, use array_unique em ID_USER_PEDIDO, e faça o loop para listar cada linha, depois disso faça os demais loops necessarios.

Se quiser a nivel de SQL, pesquise por procedures, functions e subselects

https://www.devmedia.com.br/stored-procedures-e-functions-no-mysql-com-phpmyadmin/30837

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 ernestovm
      Bom dia.
      Descobri, depois de muito trabalho, um problema esquisito. Tenho duas imagens que chamam funções JavaScript determinadas. Uma funciona e a outra não. Isso no Firefox. No Chrome as duas funcionam perfeitamente. Alguém conhece alguma gambiarra para fazer o Firefox funcionar? Segue os códigos:
      HTML:
      <img src="images/ic_abrir.png" width="70" height="70" onClick="abre_notificacao(<? echo "'".$us_codigo."','".$item."'"; ?>);" style="cursor:pointer" id="p_imagem-<? echo $item; ?>" name="p_imagem-<? echo $item; ?>">
       <img src="images/ic_excluir.png" width="70" height="70" onClick="excluir_notificacao(<? echo "'".$us_codigo."'"; ?>);" style="cursor:pointer">
      JAVASCRIPT:
      <script type="text/javascript">
          function abre_notificacao(codigo,indice) {
              $("#p_imagem-"+indice).attr("src","images/ic_abrir_ok.png");
              $("#ver-"+indice).css("display", "block");
          }
          function excluir_notificacao(codigo) {
              $.post("excluir_notificacao.php", {codigo: codigo}, function(resposta) {
                  confirm(resposta+" ("+codigo+")");
              });
              location.reload();
          }

      </script>
      A Função abre_notificacao(codigo,indice)  funciona perfeitamente nos dois browsers.
      A Função excluir_notificacao(codigo) só funciona no Chrome.
      Obrigado pela luz
    • By violin101
      Caros amigos, saudações...
       
      Se postei minha dúvida na opção errada, por favor, me perdoa.
       
      Estou com uma dúvida referente o Carregamento de INPUT através de Select Option com valor vindo do MySql.
       
      Tenho duas DIV, onde mostro um Input caso o Option seja igual a SIM.
       
      O problema é que quando Edito para Alterar o SELECT=2(SIM)  não mostra o Input Ativo.
       
      O Código está assim:
      VIEW:
       
      <div class="col-md-2"> <div class="form-group"> <label for="infoManut" class="control-label ctrlbl">Site em Manutenção:</label> <div class="controls"> <select name="infoManut" id="infoManut" style="width:100%;" class="form-control" onchange="mostrManut(this.value)"> <?php if ($syte[0]->infoManut == 1) { $nao = 'selected'; $sim = ''; } else { $nao = ''; $sim = 'selected'; } ?> <option value="1" <?= $nao ?>>NÃO</option> <option value="2" <?= $sim ?>>SIM</option> </select> </div> </div> </div> <div class="clearfix"></div> <div id="1" class="col-md-12" style="display:none;"> <div class="col-md-12"> <!---Não Mostra Nada---> </div> </div> <!--Como mostro essa DIV quando o Mysql for igual a 2 --> <div id="2" class="col-md-12" style="display:none;"> <div class="col-md-12"> <div class="form-group"> <label for="txt_manut">Informe um Motivo para Manutenção</label> <input id="txt_manut" type="txt_manut" name="txt_manut" class="form-control" style="width:100%;" /> </div> </div> </div> <div class="clearfix"></div> <br/>  
      JAVASCRIPT
       
      <script type="text/javascript"> //Habilitar e Desabilitar DIV's Manutenção do Site function mostrManut(value) { if (value == "1") { document.getElementById("1").style.display = "none"; document.getElementById("2").style.display = "none"; $("#txt_manut").val(''); } else if (value == "2") { document.getElementById("1").style.display = "none"; document.getElementById("2").style.display = "block"; } } </script>  
      Grato,
       
      Cesar
       
       
    • By Marxrj
      Boa noite, estou quebrando a cabeça para incluir marca d'agua em imagens no upload.
      No upload eu consigo fazer o redimensionamento perfeito, inserir uma parte de outro código para inserir a marca d'agua, porpem ele não funcionou na primeira tentativa, fiz umas alterações, aí ele faz o redimensionamento, coloca a logo mas a imagem de fundo fica simplesmente preta..
       
      Esse abaixo é o padrão no qual ele faz o upload da foto e redimensiona, TUDO CERTO!!
      switch ($foto['type']): case 'image/jpeg'; case 'image/pjpeg'; $imagem_temporaria = imagecreatefromjpeg($caminho_imagem); $largura_original = imagesx($imagem_temporaria); $altura_original = imagesy($imagem_temporaria); $nova_largura = $largura ? $largura : floor(($largura_original / $altura_original) * $altura); $nova_altura = $altura ? $altura : floor(($altura_original / $largura_original) * $largura); $imagem_redimensionada = imagecreatetruecolor($nova_largura, $nova_altura); imagecopyresampled($imagem_redimensionada, $imagem_temporaria, 0, 0, 0, 0, $nova_largura, $nova_altura, $largura_original, $altura_original); imagejpeg($imagem_redimensionada, $caminho_imagem);  
      Ai parti para inserir a parte para colocação da marca d'adua. O que foi incluso é aonde tem os comentários. Mas acontece neste momento que ele faz o upload e o redimensionamento normal mas não insere a marca d'agua
      switch ($foto['type']): case 'image/jpeg'; case 'image/pjpeg'; $imagem_temporaria = imagecreatefromjpeg($caminho_imagem); // Obtem a logomarca $imagem_logo = imagecreatefromgif( "logo_texto.gif" ); $largura_original = imagesx($imagem_temporaria); $altura_original = imagesy($imagem_temporaria); // Obtem a largura_nova da imagem $larguraLogo = imagesx( $imagem_logo ); // Obtém a altura da imagem $alturaLogo = imagesy( $imagem_logo ); // Calcula X 5px da latreral direira $x_logo = imagesx( $imagem ) - $larguraLogo - 5; // Calcula X 5px do rodapé $y_logo = imagesy( $imagem ) - $alturaLogo - 5; // Copia a logo para a imagem imagecopymerge( $imagem, $imagem_logo, $x_logo, $y_logo, 0, 0, $larguraLogo, $alturaLogo, 100 ); $nova_largura = $largura ? $largura : floor(($largura_original / $altura_original) * $altura); $nova_altura = $altura ? $altura : floor(($altura_original / $largura_original) * $largura); $imagem_redimensionada = imagecreatetruecolor($nova_largura, $nova_altura); imagecopyresampled($imagem_redimensionada, $imagem_temporaria, 0, 0, 0, 0, $nova_largura, $nova_altura, $largura_original, $altura_original); imagejpeg($imagem_redimensionada, $caminho_imagem);  
      Por fim apenas apenas troquei o nome imagem_logo na parte que iria inserir a marca d'agua por imagem_temporaria que já tinha no código antigo. Neste momento ele faz o upload, redimensiona e insere a marca d'agua, mas a imagem de fundo não aparece, fica um fundo preto.
       
      switch ($foto['type']): case 'image/jpeg'; case 'image/pjpeg'; $imagem_temporaria = imagecreatefromjpeg($caminho_imagem); // Obtem a logomarca $imagem_temporaria = imagecreatefromgif( "logo_texto.gif" ); $largura_original = imagesx($imagem_temporaria); $altura_original = imagesy($imagem_temporaria); // Obtem a largura_nova da imagem $larguraLogo = imagesx( $imagem_temporaria ); // Obtém a altura da imagem $alturaLogo = imagesy( $imagem_temporaria ); // Calcula X 5px da latreral direira $x_logo = imagesx( $imagem ) - $larguraLogo - 5; // Calcula X 5px do rodapé $y_logo = imagesy( $imagem ) - $alturaLogo - 5; // Copia a logo para a imagem imagecopymerge( $imagem, $imagem_temporaria, $x_logo, $y_logo, 0, 0, $larguraLogo, $alturaLogo, 100 ); $nova_largura = $largura ? $largura : floor(($largura_original / $altura_original) * $altura); $nova_altura = $altura ? $altura : floor(($altura_original / $largura_original) * $largura); $imagem_redimensionada = imagecreatetruecolor($nova_largura, $nova_altura); imagecopyresampled($imagem_redimensionada, $imagem_temporaria, 0, 0, 0, 0, $nova_largura, $nova_altura, $largura_original, $altura_original); imagejpeg($imagem_redimensionada, $caminho_imagem); Se alguém puder da uma luz e dizer aonde estou errando.
    • By k9studio
      Olá meus Amigos,
       
      Estou tendo dificuldades em eliminar dados repetidos de uma session
      é um sisteminha de pesquisa de domínios com array
      quero eliminar quando já tiver um nome na session, não deixar gravar outro
      aguem pode ajudar
      veja como está  
      Array ( [0] => Array ( [type] => register [domain] => testeteste.com.br [regperiod] => 1 ) [1] => Array ( [type] => register [domain] => testeteste.com [regperiod] => 1 ) [2] => Array ( [type] => register [domain] => testeteste.net.br [regperiod] => 1 ) [3] => Array ( [type] => register [domain] => testeteste.com.br [regperiod] => 1 ) [4] => Array ( [type] => register [domain] => testeteste.com [regperiod] => 1 ) [5] => Array ( [type] => register [domain] => testeteste.net.br [regperiod] => 1 ) ) Desde já muito obrigado a todos
    • By realisacnovaes
      Sou novo no fórum e não sei se postei no lugar certo, mas desde já peço desculpas.
       
      Eu estou com um projeto de desenvolver um chat online, porém preciso de algumas ajudas e pago pelo serviço.
       
      já tenho um chat em php (modelo livre construido e disponibilizado de graça no youtube) e gostaria de fazer algumas modificações tais como:
      - Chat em grupo
      - Deletar mensagem para mim/todos
      - ligação por áudio e vídeo
       
      outras coisas adicionais.
      alguém poderia me ajudar ou alguém disponível para eu contratar?
×

Important Information

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