Jump to content
felpsquirino

Condição if e else em um foreach

Recommended Posts

Olá Pessoal;

Já tem alguns dias que venho perdendo a cabeça rsrs não consigo fazer um if e else em um loop foreach meu código: 

<?php if (isset($list_pedidos_abertos)){ foreach($list_pedidos_abertos as $row) : ?>
	<div class="espera_item">
		<?php echo $row->html?>
	</div>
<?php endforeach; } ?>

Eu preciso que quando não tiver nenhum registro ele mostre a mensagem "Nenhum registro encontrado", tentei fazer assim mas não deu certo ele não retorna "0" na contagem: 

<?php 
$cont = 0;
foreach($list_pedidos_abertos as $row){ 
$cont = $cont +1;
  
if($cont == 0){
	echo 'nenhum registro encontrado';
}else{                      
?> 
	<div class="espera_item">
    	<?php echo $row->html?>
    </div>
<?php
	}
} 
?>

 o que eu estou fazendo de errado ? Grato pela ajuda ;)

Share this post


Link to post
Share on other sites

O que está errado é o $cont que você está utilizando, você tem que contar a quantidade de conteúdo dentro de $list_pedidos_aberto, fazer uma verificação com empty ou qualquer outra função pra verificar o conteúdo dentro de $list_pedidos_abertos, exemplo:

<?php 
foreach($list_pedidos_abertos as $row){  
if(empty($list_pedidos_abertos)){
	echo 'nenhum registro encontrado';
}else{                      
?> 
	<div class="espera_item">
    	<?php echo $row->html?>
    </div>
<?php
	}
} 
?>

Nesse exemplo aí que te dei ele verifica se $list_pedidos_aberto está vazio (empty($list_pedidos_abertos)), se tiver vazio ele dispara a mensagem de nenhum registro encontrado, se não tiver vazio ele segue normalmente o bloco else.

 

Da forma como você estava fazendo o contador $cont já adicionava +1 logo no início do script e por isso no seus testes não aparecia a mensagem "nenhum registro encontrado" pq o resultado de $cont já é 1 antes de chegar no if que verificava se $list_pedidos_abertos era 0 ou não.

  • +1 1

Share this post


Link to post
Share on other sites

Se a variavel $list_pedidos_abertos é recebida de uma consulta do BD, o jeito certo seria assim:

<?php
if($list_pedidos_abertos == true)
{
	foreach($list_pedidos_abertos as $row)
	{

?> 
	<div class="espera_item">
    	<?php echo $row->html?>
    	</div>
<?php
	}
}else{

	echo 'Nenhum registro encontrado.';
} 
?>

 

  • +1 1

Share this post


Link to post
Share on other sites
3 horas atrás, BrunoMs disse:

O que está errado é o $cont que você está utilizando, você tem que contar a quantidade de conteúdo dentro de $list_pedidos_aberto, fazer uma verificação com empty ou qualquer outra função pra verificar o conteúdo dentro de $list_pedidos_abertos, exemplo:


<?php 
foreach($list_pedidos_abertos as $row){  
if(empty($list_pedidos_abertos)){
	echo 'nenhum registro encontrado';
}else{                      
?> 
	<div class="espera_item">
    	<?php echo $row->html?>
    </div>
<?php
	}
} 
?>

Nesse exemplo aí que te dei ele verifica se $list_pedidos_aberto está vazio (empty($list_pedidos_abertos)), se tiver vazio ele dispara a mensagem de nenhum registro encontrado, se não tiver vazio ele segue normalmente o bloco else.

 

Da forma como você estava fazendo o contador $cont já adicionava +1 logo no início do script e por isso no seus testes não aparecia a mensagem "nenhum registro encontrado" pq o resultado de $cont já é 1 antes de chegar no if que verificava se $list_pedidos_abertos era 0 ou não.

Entendi agora o que eu estava fazendo de errado... eu estava colocando + 1 bem no inicio ai não ia dar 0 nunca. mas com o seu exemplo de codigo não retornou a mensagem, consegui a solução com o exemplo do nosso amigo Luiz gustavo fazendo isso: 

<?php
if($list_pedidos_abertos == true){
	foreach($list_pedidos_abertos as $row){
?> 
	<div class="espera_item">
    	<?php echo $row->html?>
    </div>
<?php
    }
}else{
	echo 'Nenhum registro encontrado.';
} 
?>

Muito obrigado pela explicação! 

2 horas atrás, Luiz Gustavo Costa Ceolin disse:

Se a variavel $list_pedidos_abertos é recebida de uma consulta do BD, o jeito certo seria assim:


<?php
if($list_pedidos_abertos == true)
{
	foreach($list_pedidos_abertos as $row)
	{

?> 
	<div class="espera_item">
    	<?php echo $row->html?>
    	</div>
<?php
	}
}else{

	echo 'Nenhum registro encontrado.';
} 
?>

 

Luiz, muito obrigado essa é a solução grande abraço! 

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 biakelly
      Oi,
       
       não estou conseguindo fazer isso, podem me ajudar?
       
      <?php $botaoaluno = mysql_query("SELECT aluno FROM escola WHERE colegio_id='$colid'",$db); $alunoativo = mysql_num_rows($botaoaluno); if ($alunoativo = 1) { ?> <?php $pegaralunos = mysql_query("SELECT alunosdisponiveis FROM tabelasalunos WHERE userID='{$_SESSION['userid']}' and alunosID='{$objauALN["alunID"]}'", $db); $classe = mysql_num_rows($pegaralunos); if ($classe > 0) { ?> <button name="geraralunos">Aluno presente</button> <?php } else { ?> <button name="geraralunos">Aluno faltante</button> <? } } else{ ?> <p>Não tem aluno</p> <?php } ?> o que eu preciso, se o alunoativo for igual a 1, fazer o próximo IF, mas se ele for igual a 0 mostrar a mensagem (não tem aluno)
    • By Diego-SLP
      Boa tarde,
       
      Tenho um while retornando alguns dados do meu banco e gostaria que nessa tabela a ultima linha fosse a soma da coluna, como posso fazer isso ?
       
      Obrigado
    • By Camilavip
      Oi, faço uma consulta no banco de dados para trazer os valores como: Nome, email, telefone, cidade... e se o usuário está ativo ou não
      No campo ativo ele grava 0 se não tiver ativo e 1 se tiver ativo, mas queria que ele trouxesse se for 0 a palavra Não e se for 1 a palavra Sim
      Faço a consulta como abaixo.
      <?php $sql = "SELECT * FROM clientes"; $result = $sqli->query($sql); if ($result->num_rows) { while ($dados = $result->fetch_assoc()) { $id_cliente = $dados['id_cliente']; $cliente = $dados['cliente']; $email = $dados['email']; $ativo = $dados['ativo']; ?> E em seguida apenas chamo os dados.
      <?= $cliente; ?> <?= $email; ?> <?= $ativo; ?> Que me traz os resultados
      Ricardo
      xxxx@xxxx.com
      0 ou 1 de acordo se ele está ativo ou não. Mas aqui eu queria que ele trouxesse de acordo Não ou Sim e não 0 ou 1
×

Important Information

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