Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucas Santos Amorim

Evitar requisições

Recommended Posts

Olá pessoal, boa tarde! Esse é o meu primeiro post e gostaria da ajuda de vocês no desenvolvimento de um sistema em PHP que faz uso de cadastro de empresas, onde cada empresa poderá adicionar algumas imagens.

Segue o diagrama da tabela Empresa e Imagens:

imagem.jpg

O resultado seria:

imagem_empresa.jpg

Minha intenção é evitar várias requisições em uma só página e ganhar desempenho.

Gostaria de ajuda para fazer em um loop como esse, somente uma requisição com mysqli, usando JOIN ou outro método eficiente.

Desde já, muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem Vindo!

Aqui é um fórum e não um sistema de ajuda, poste o que já fez e leia as regras. E claro sem vitimização.

http://forum.imasters.com.br/topic/542539-atencao-orientacoes-e-regras-do-forum-de-php/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, desculpa se não transmiti de forma clara minha dúvida.

Fiz um paliativo e atualmente o código está funcionando da seguinte forma:

	<?php
        
        $result_empresa = "SELECT * FROM EMP_EMPRESAS";
        $resultado_empresa = mysqli_query($conn, $result_empresa);
        $linha_empresa = mysqli_fetch_assoc($resultado_empresa);
                        
        $total_linhas_empresa = mysqli_num_rows($resultado_empresa);
        
        if($total_linhas_empresa > 0) {
        
        do { ?>

               <row>
                  <div class="highlights-box col-xs-12 bg-faded p-1 my-1">
                     <div class="col-xl-1 col-lg-2 pl-0 pt-1 pr-0 pb-0 m-0">
                        <a href="#" class="logo-perfil-md-a">
                           <img src="admin/images/tmp/<?php echo $linha_empresa['logo_empresa']; ?>" class="logo-perfil-md rounded-circle p-0 m-0 bs-c-md" alt="" width="100%">
                        </a>
                     </div>
                     <div class="col-xl-11 col-lg-10 pl-2 pt-0 pr-0 vertical-content-align">
                        <div class="col-xl-9 col-lg-7 highlights-content pl-0">
                           <a href="negocios.php?id_empresa=<?php echo $linha_empresa['id_empresa']; ?>" class="highlights-title-xl highlights-title-a highlights-title-lg col-xs-12 pl-0 pr-0-5 pt-0-5"><?php echo $linha_empresa['nome_empresa']; ?></a>
                           <p class="highlights-desc-xl highlights-desc-lg float-xs-left py-0-5 pr-0-5"><?php echo $linha_empresa['descricao_resumida']; ?></p>
                           <row>
                              <div class="highlights-grid col-xs-12 p-0 clearfix">
                                 <div class="highlight-media col-xs-12 p-0">
                                 <?php
								 
				$id_empresa = $linha_empresa['id_empresa'];
                                             
                                 $result_imagem = "SELECT * FROM EMP_IMAGENS WHERE id_empresa = $id_empresa";
                                 $resultado_imagem = mysqli_query($conn, $result_imagem);
                                 $linha_imagem = mysqli_fetch_assoc($resultado_imagem);
                            
                                 $total_linhas_imagem = mysqli_num_rows($resultado_imagem);
            
                                 if($total_linhas_imagem > 0) {
            
                                 do { ?>

                                    <img src="admin/upload_thumb/<?php echo $linha_imagem['imagem_empresa'] ?>" class="highlights-thumb" alt="" width="100%">
 
                                 <?php   
                                        
                                    // finaliza o loop que vai mostrar os dados
                                    } while ($linha_imagem = mysqli_fetch_assoc($resultado_imagem));
                                 // fim do if 
                                 }
                                
                                ?>

                                </div>
                              </div>
                           </row>
                        </div><!--close-->
                        
                     </div>
                  </div><!--close-highlights-box-->
               </row>

	<?php

            // finaliza o loop que vai mostrar os dados
            } while ($linha_empresa = mysqli_fetch_assoc($resultado_empresa));
        // fim do if 
        }

        ?>

O ideal é usar o JOIN, e usando o JOIN a Query ficou da seguinte forma:

SELECT emp_empresas.emp_empresas_id, emp_imagems.emp_empresas_id FROM emp_empresas inner join emp_imagems on emp_empresas.emp_empresas_id = emp_imagems.emp_empresas_id

Minha dificuldade é listar e organizar as empresas e suas respectivas imagens de forma que fique assim:

imagem_empresa.jpg

Se eu puder contar com alguma sugestão, ideia ou ajuda de você para esse loop, ficarei muito grato.

Vou continuar tentando.

Se eu conseguir a solução, vou postar aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi corretamente, o resultado dessa query será algo assim:

emp_id : emp_img

1 : img01

1 : img02

1 : img03

2 : img01

....

Correto ?

Se for assim, algo como:

$id_empresa = 0;
foreach ($resultado_db as $resultados) {
if($id_empresa <> $resultados['id_empresa']) {
echo $id_empresa;
}
echo $img_empresa;
if($id_empresa <> $resultado['id_empresa']) {
echo "<p>";
}
$id_empresa = $resultados['id_empresa'];

Mais ou menos nessa linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer se livrar desse SELECT dentro do loop, certo?

Isso é o que algumas chamam de Problema do N + 1. Falo sobre isso e como resolver neste artigo: http://rberaldo.com.br/o-problema-do-n-mais-1/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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