Ir para conteúdo
Carlos Antoliv

Como usar o foreach para pegar pegar todos os "produtos" de um grupo na coluna?

Recommended Posts

Então, eh algo até simples, problema de lógica e tudo.  Eu tinha feito, mas o codigo sumiu do nada e nao lembro mais da lógica que eu empregara.

 

O enredo éh assim

 

tabela_grupo_produtos

e

tabela tabela_produtos

 

Na tabela_grupo_produtos tem:
- informatica;

- eletrodomestico;

- brinquedos;

 

na  tabela_produtos tem os podutos que são ligados a tabela de grupo de grupo de produtos:
 

- informatica->notebook

- informatica->computador

- informatica->roteador

 

- eletrodomestico->geladeira

- eletrodomestico->microondas

- eletrodomestico->fogao

 

- brinquedos->lego

- brinquedos->boneca

- brinquedos->carrinhos

 

O que estou tentando fazer é o seguinte:

 

- informatica->notebook

                        ->computador

                        ->roteador

 

- eletrodomestico->geladeira

                               ->microondas

                               ->fogao

 

- brinquedos- >lego

                       -> boneca

                       ->carrinhos

 

 

Ou seja, mostra na tela pelo "GRUPO" de produtos.

 

fiz um select no banco....

e tambem um foreach, mas tem algo que ta errado.

 

Cheguei até executar dois selects distintos:

EXEMPLO:


<!--#################### CÓDIGO SESSÃO ################################ --> 

<?php
    session_start();
    echo "Usuario: ". $_SESSION['usuarioNome'];    
    echo "<br>";
    echo "Codigo:  ". $idSessao = $_SESSION['usuarioId'];
?>


<br>
 

<a href="sair.php">Sair</a>
<!-- #####################FIM CODIGO SESSÃO ############################### -->

<?php 
    $servername = "localhost";
$username = "root";
$password = "";
$database = "";

try {
    $conexao2 = new PDO('mysql:host=localhost;dbname=banco', $username, $password);
      $conexao2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  } catch(PDOException $e) {
      echo 'ERROR: ' . $e->getMessage();
  }
    
    $sql2 = "SELECT pdos.fk_usuarios, pdos.nome_prod, pdo.nome_produto, nome_grupo_prod, pdos.foto, pdos.desc_prod, pdos.peso_liq_prod, pdos.qtd_prod, pdos.id_prod, pdos.un_medida
    FROM tb_produtos AS pdos
    JOIN tb_produto AS pdo ON pdos.nome_prod = pdo.id_produto
    JOIN tb_grupo_prod AS gpdo 
    ON gpdo.id_grupo_prod = pdos.fk_tb_grupo_prod 
    INNER JOIN usuarios As usu
    ON pdos.fk_usuarios = usu.id  ";


    $stm2 = $conexao2->prepare($sql2);
    $stm2->execute();
    $kit3 = $stm2->fetchAll(PDO::FETCH_OBJ);
?>

<?php
require 'database/conexao.php';

// Recebe o termo de pesquisa se existir
$termo = (isset($_GET['termo'])) ? $_GET['termo'] : '';

// Verifica se o termo de pesquisa está vazio, se estiver executa uma consulta completa
if (empty($termo)):

    $conexao = conexao::getInstance();
    $sql = 'SELECT DISTINCT
item.fk_tb_produtos,
usu.nome,
prod.nome_produto,
prods.desc_prod,
prods.peso_liq_prod,
prods.un_medida,
item.fk_tb_kit,
kit.nome_kit,
kit.preco_kit,
prods.qtd_prod,
kit.id_nome_kit,
kit.desc_kit


FROM tb_itemprodkit item /* tb_itemprodkit*/

INNER JOIN usuarios usu        /* usuarios*/
ON item.fk_usuarios = usu.id

INNER JOIN tb_produtos prods  /* tb_produtos */
ON item.fk_tb_produtos = prods.id_prod

INNER JOIN tb_kit kit       /*tb_kit */
ON item.fk_tb_kit = kit.id_nome_kit

INNER JOIN tb_produto prod
ON prods.nome_prod = prod.id_produto  WHERE fk_usuario = 5 GROUP BY kit.id_nome_kit  ';
    $stm = $conexao->prepare($sql);
    $stm->execute();
    $kit = $stm->fetchAll(PDO::FETCH_OBJ);

else:

    // Executa uma consulta baseada no termo de pesquisa passado como parâmetro
    $conexao = conexao::getInstance();
    $sql = 'SELECT * FROM tb_kit WHERE nome_kit LIKE :nome_kit OR desc_kit LIKE :desc_kit';
    $stm = $conexao->prepare($sql);
    $stm->bindValue(':nome_kit', $termo.'%');
    $stm->bindValue(':desc_kit', $termo.'%');
    $stm->execute();
    $kit = $stm->fetchAll(PDO::FETCH_OBJ);

endif;
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Listagem KITs </title>
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="css/custom.css">
</head>
<body>
    <div class='container'>
        <fieldset>

            <!-- Cabeçalho da Listagem -->
            <legend><h1>Listagem de Kits</h1></legend>

            <!-- Formulário de Pesquisa -->
            <form action="" method="get" id='form-contato' class="form-horizontal col-md-10">
                <label class="col-md-2 control-label" for="termo">Pesquisar</label>
                <div class='col-md-7'>
                    <input type="text" class="form-control" id="termo" name="termo" placeholder="Infome o Nome ou E-mail">
                </div>
                <button type="submit" class="btn btn-primary">Pesquisar</button>
                <a href='index.php' class="btn btn-primary">Ver Todos</a>
            </form>

            <!-- Link para página de cadastro -->
            <a href='kit_cadastro.php' class="btn btn-success pull-right">Cadastrar Kit</a>
            <div class='clearfix'></div>

            <?php if(!empty($kit)):?>

                <!-- Tabela de Clientes -->
                <table class="table table-striped">
                    <tr class='active'>
                        <th>Foto</th>
                        <th>produto</th>
                        <th>Nome</th>
                        <th>Descrição</th>
                        <th>Preço</th>
                        <th>Ação</th>
                    </tr>
                    <?php foreach($kit as $kit2):?>
                        <tr>
                            <td><img src='fotos/<?=$kit2->foto?>' height='40' width='40'></td>
                            
                           
                            <?php foreach($kit3 as $kit4):?>
                            <td> 
                                <?=$kit4->nome_produto.'<br>'; ?>
                                
                         
                         </td><?php endforeach; ?>
                           
                            
                            <td><?=$kit2->nome_kit?></td>
                                </td>
                            <td><?=$kit2->desc_kit?></td>
                            <td><?='R$ '.$kit2->preco_kit.',00'?></td>
                            
                            <td>
                                <a href='kit_editar.php?id_nome_kit=<?=$kit2->id_nome_kit?>' class="btn btn-primary">Editar</a>
                                <a href='javascript:void(0)' class="btn btn-danger link_exclusao" rel="<?=$kit2->id_nome_kit?>">Excluir</a>
                            </td>
                        </tr>    
                        
                        
                      
                        
                        
                    <?php endforeach;?>
                </table>

            <?php else: ?>

                <!-- Mensagem caso não exista clientes ou não encontrado  -->
                <h3 class="text-center text-primary">Não existe Kit cadastrados!</h3>
            <?php endif; ?>
        </fieldset>
    </div>
    <script type="text/javascript" src="js/custom.js"></script>
</body>
</html>

 

....se alguem puder ajudar...

 

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 Willian Simione
      Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez

    • Por Giovanird
      Tenho uma tabela com a coluna média (valor decimal) .
       
      cod | media | cod_sala 1 1,98 5 2 2,34 2 3 1,32 5 4 2,51 3 5 1,65 1 6 2,78 5 7 4,95 4 8 0,75 4 9 1,23 1 10 1,63 2 11 1,55 3 Preciso no select MYSQL ou dentro do foreach multiplicar os valores do campo média, de acordo com o fitro por cod_sala
      Exemplo pelo cod_sala: 5
      Sendo o resultdo final: 1,98 * 1,32 * 2,78 = 7,26

      Desde já agradeço!
    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
    • Por Ruyter
      Estou com problema para resolver uma solução que estou necessitando. Toda ajuda será bem-vinda!
       
      Tenho uma tabela onde há vários registros com um mesmo IDENTIFICADOR e vários INDENTIFICADORES diferentes em uma mesma coluna.
      Como percorrer os registros de uma tabela, com base nos IDENTIFICADORES?
      Preciso também analisar um período por data (>= e <=) e ABSTRAIR deste período o valor MIN e MAX de uma outra coluna
      Esta consulta precisa ser realizada em cada IDENTIFICADOR DISTINTO?
       
      Já utilizei o BETWEEN, mas ao usar o código com o foreach() no PHP ele lê apenas um registro.
      O código que estou trabalhando é este:
       
      SELECT conf_hidro_inatividade, cons_reg_ident_iot, cons_data, MIN(cons_leitura_atual), MAX(cons_leitura_atual), hidro_valvula, hidro_cliente FROM tab_conf_hidro, tab_consumo INNER JOIN tab_hidrometros ON cons_reg_ident_iot = hidro_ident_iot WHERE cons_reg_ident_iot = '20220701001' and conf_hidro_inatividade = 'sim' and hidro_valvula = 'aberta' and cons_data BETWEEN '2022-10-10' and '2022-10-13';  
      Com:

       
      SELECT conf_hidro_inatividade, cons_reg_ident_iot, cons_data, cons_leitura_atual, hidro_valvula, hidro_cliente /*(sem o MIN e MAX na mesma coluna)*/ WHERE cons_reg_ident_iot != ' ' and conf_hidro_inatividade = 'sim' and hidro_valvula = 'aberta';  
      usando dentro do foreach(), percorre todos os registros.
    • Por k9studio
      Meus amigos,
      preciso de um help
      seguinte tenho um credito quero lançar em varias faturas eum foreach até o valor do credito
      tipo exemplo a baixo:
      $credito = 100;
      foreach($shows as $rows){
      fatura 1 Valor 20,00  -100 marca como pago
      fatura 2 Valor 20,00  -80  marca como pago
      fatura 3 Valor 20,00  -60  marca como pago
      fatura 4 Valor 20,00  -40  marca como pago
      fatura 5 Valor 30,00  -20  aqui deixa como não pago
      }
×

Informação importante

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