Whlie exibir mais de um resultado por laço

20/10/2015

0

Bom dia!
Galera, ainda sou novo.
Estou com um codigo php e preciso que o while em um mesmo laço exiba 6 resultados, isso é possível, caso sim, como? caso não, qual a solução ?
Segue codigo abaixo:
  <?php 
                   
        
		#########################################
		$conexao = conectar();
                                $sql = "SELECT *  FROM convenios LIMIT 6";
                                $stmt = $conexao->prepare($sql);
                                $stmt->execute();
								while ($row =  $stmt->fetch()) {
									
								?>
		<div class="item-convenios">
					<div class="pull-left">
						<img id="<?= $row['id'] ?>" height="" width="" src="data:imagemconvenio;base64,<?= $row['imagemconvenio'] ?>" />
						<img id="<?= $row['id'] ?>" height="" width="" src="data:imagemconvenio;base64,<?= $row['imagemconvenio'] ?>" />
					</div>
					<div class="pull-left">
						<img id="<?= $row['id'] ?>" height="" width="" src="data:imagemconvenio;base64,<?= $row['imagemconvenio'] ?>" />
						<img id="<?= $row['id'] ?>" height="" width="" src="data:imagemconvenio;base64,<?= $row['imagemconvenio'] ?>" />
					</div>
					<div class="pull-left">
						<img id="<?= $row['id'] ?>" height="" width="" src="data:imagemconvenio;base64,<?= $row['imagemconvenio'] ?>" />
						<img id="<?= $row['id'] ?>" height="" width="" src="data:imagemconvenio;base64,<?= $row['imagemconvenio'] ?>" />
					</div>
				</div>
				
				<?php
								}
								
        ?>


A ideia é que ele jogue 6 imagens diferentes nas divs em cada laço.
Igor Oliveira

Igor Oliveira

Responder

Posts

20/10/2015

Jothaz

Não sou muito bom com PHP e não tenho como testar,mas aparentemente a ideia é esta mesmo.

Qual o erro que retorna? Poste-o para facilitar a ajuda.

Qual o conteúdo do campo "imagemconvenio"?

Qual o HTML gerado?
Responder

20/10/2015

Igor Oliveira

A ideia é ele buscar uma imagem do banco.
Exemplo: no banco tenho cadastrado 12 imagens.
quando ele fizer o loop ele deve colocar uma imagem diferente em cada img. no caso 6 imagens,
faz novamente o loop e colocar + 6

Porém ele faz o loop, joga uma imagem 6 x. Em cada img ele joga a mesma imagem.
Depois ele faz o loop e joga a 2ª img 6x
e assim vai 12 vezes.
Responder

20/10/2015

Jothaz

Com já disse não uso e nem gosto de PHP e não tenho nem como testa, mas acho que o código abaixo pode ajudá-lo, claor que você terá que sempre ter as imagens na sequencia certa e na quantidade certa.

Teste ai e veja o que acontece. Se der erro de sintaxe, me desculpe vai ter de consertar. kkk

<?php
                  
       
      #########################################
	$conexao = conectar();
	$sql = "SELECT *  FROM convenios LIMIT 6";
	$stmt = $conexao->prepare($sql);
	$stmt->execute();

	$contador = 0; 
	$quebrou = true;

  while ($row =  $stmt->fetch()) {
                                   
		if ($quebrou) {
?>
			<div class="item-convenios">
	    <?php
			
		}	 
		?>  
			<div class="pull-left">
				  <img id="<?= $row['id'] ?>" height="" width="" src="data:imagemconvenio;base64,<?= $row['imagemconvenio'] ?>" />
			</div>

		<?php if ($quebrou) {?>
              </div>
        <?php
                               $quebrou = false;
                 }	
		$contador = $contdor +  1;
		 if ($contador == 3)
		 {
			$contador = 0
			$quebrou = true;
		 }	  
	}
                               
?>



Na verdade não gosta e misturar o código PHP com o HTML, mas fazer-se-a o que?
Responder

20/10/2015

Igor Oliveira

Ele exibiu apenas 1 imagem por vez.
Responder

20/10/2015

Jothaz

Brother estou fazendo o código sem poder testar então fica mais difícil acertar e como já disse não sou muito fã do PHP. kkkkkk

Tente entender a lógica que propus e tente ajustá-la.

E realmente o código que postei estava errado, teste assim:

<?php
       
      #########################################
    $conexao = conectar();
    $sql = "SELECT *  FROM convenios LIMIT 6";
    $stmt = $conexao->prepare($sql);
    $stmt->execute();
 
    $contador = 0; 
    $quebrou = true;
 
  while ($row =  $stmt->fetch()) {
                                    
        if ($quebrou) {
        ?>
            <div class="item-convenios">
        <?php
            $quebrou = false;
        }    
        ?>  
            <div class="pull-left">
                  <img id="<?= $row['id'] ?>" height="" width="" src="data:imagemconvenio;base64,<?= $row['imagemconvenio'] ?>" />
            </div>
 
        <?php
         $contador = $contdor +  1;
         if ($contador == 3)
         {
			 ?> 
              </div>
			 <?php 
				  
            $contador = 0
            $quebrou = true;
         }    
    }
                                
?>


Teste e veja se roda.
Responder

20/10/2015

Igor Oliveira

Funcionou, porém dentro da div pull-left precisaria que gerasse duas imagens diferentes.
Responder

20/10/2015

Jothaz

Camarada sinceramente não sei se posso ajudá-lo, pois estou viajando e não tenho como instalar o PHP no note que estou usando.
Não sei qual o resultado final que você deseja.
Não conheço a estrutura e conteúdo da sua tabela.
Então por mais que eu queira fica muito difícil.

Vou lhe sugerir uma outra abordagem.

Faça o While e criei um array com os caminhos da imagem:

while ($row =  $stmt->fetch()) {
  //Crie o array aqui, na web você vai achar centenas de exemplo de com fazer
  //Coloque o conteúdo do campo camiho da imagem no array
}



Depois use o array para criar as div´s:

<div class="item-convenios">
	  <div class="pull-left">
		  <img id="<?= $row['id'] ?>" height="" width="" src="data:imagemconvenio;base64,<?= $row['seu_array[0]'] ?>" />
		  <img id="<?= $row['id'] ?>" height="" width="" src="data:imagemconvenio;base64,<?= $row['seu_array[1]'] ?>" />
	  </div>

===> coloque o resto de acordo com a necessidae

  </div>


Bom espero que lhe ajude e boa soete.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar