Ir para conteúdo

Arquivado

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

jnejunior

loop foreach não funciona como esperado, meu erro

Recommended Posts

fala ai pessoal...

 

estou tentando fazer um loop usando foreach, mas não esta funcionando como esperado..

estou usando uma classe para conexão com banco de dados e PDO para o mesmo..

 

veja, o que estou tentando sem sucesso é isso:

<?php
if ($recuperar == 'destaque') {
$tabela = '`jre_video_aulas`';
$ordem = 'data_hora DESC';
$limite = 1;
} elseif ($recuperar == 'recentes') {
$tabela = '`jre_video_aulas`';
$ordem = 'ORDER BY data_hora DESC';
$limite = '1, 6';
}

$videoAula = BD::conn()->prepare("SELECT * FROM
									$tabela
									WHERE status = ?
									ORDER BY $ordem
									LIMIT $limite");
$videoAula->execute(array('on'));

if($videoAula->rowCount() < 1) {
    echo 'sem dados';
} else {
    $videoAulasDados = $videoAula->fetchObject();
}

if ($recuperar == 'destaque') {
?>
<img alt="<?php echo $videoAulasDados->titulo; ?>" src="http://localhost/siteJunior/scripts/timthumb.php?src=<?php echo $videoAulasDados->miniatura; ?>&h=180&w=300&zc=1" />
<h3><a title="<?php echo $videoAulasDados->titulo; ?>" href="falta_o_link"><?php echo $videoAulasDados->titulo; ?></a></h3>
<p><?php echo limitaTexto($videoAulasDados->descricao, 360); ?></p>
<?php
} elseif ($recuperar == 'recentes') {
$i = 0;
   // aqui esta o meu loop
   foreach ($videoAulasDados as $videoAulasDados1) {
	if ($i % 2 == 0) {
		$margin = 'style="margin-right: 30px;"';
	} else {
		$margin = 'style="margin-right: 0;"';
	}
?>
<li <?php echo $margin; ?>>
	<img alt="<?php echo $videoAulasDados1->titulo; ?>" src="http://localhost/siteJunior/scripts/timthumb.php?src=<?php echo $videoAulasDados1->miniatura; ?>&h=84&w=143&zc=1" />
	<a href="falta_link" title="<?php echo $videoAulasDados1->titulo; ?>"><?php echo limitaTexto($videoAulasDados1->titulo, 80); ?></a>
</li>
<?php
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já debugou a variável $videoAulasDados antes do foreach para verificar se ela possui os dados/estrutura que você espera ter?

 

<?php

echo '<pre>';

var_dump( $videoAulasDados );
exit;

foreach( $videoAulasDados as $videoAulasDados1 ) {

   continua...

Compartilhar este post


Link para o post
Compartilhar em outros sites

debuguei e a resposta foi essa:

 

sem dados

object(stdClass)[3]

public 'id' => string '15' (length=2)

public 'autor' => string 'Junior Eberhardt' (length=16)

public 'email' => string 'junior.eberhardt@gmail.com' (length=26)

public 'site' => string 'http://www.google.com' (length=21)

public 'titulo' => string 'esta eh a video aula mais recente, adicionada por mim' (length=53)

public 'data_hora' => string '2012-01-08 16:15:13' (length=19)

public 'miniatura' => string 'http://i1.ytimg.com/vi/GchctYX9i2o/0.jpg' (length=40)

public 'descricao' => string 'O YouTube NextUp está chegando no Brasil e o Denis Lee explica quais são as regras do programa. Não se esqueça de ler todo o regulamento antes de enviar seu ...O YouTube NextUp está chegando no Brasil e o Denis Lee explica quais são as regras do programa. Não se esqueça de ler todo o regulamento antes de enviar seu ...O YouTube NextUp está chegando no Brasil e o Denis Lee explica quais são as regras do programa. Não se esqueça de ler todo o regulamento antes de enviar seu ...O YouTube NextUp est'... (length=1804)

public 'embed' => string '_sSV_sW1IKU' (length=11)

public 'categoria' => string 'photoshop' (length=9)

public 'visitas' => string '25' (length=2)

public 'status' => string 'on' (length=2)

Compartilhar este post


Link para o post
Compartilhar em outros sites

sua consulta está retornando um objeto, não um array de objetos.

Faça um teste antes do foreach:

if(is_array($videoAulasDados)):
   foreach($videoAulasDados as $videoAula):
       //código
   endforeach;
else:
   // escreve os valores de $videoAulasDados
endif;

Compartilhar este post


Link para o post
Compartilhar em outros sites

menino levado, eu consegui resolver assim:

 

while ($videoAulasDados1 = $videoAula->fetchObject()) {

 

testei o que você disse, mas ele retorna apenas um resultado, e eu preciso de vários...

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.