Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
boa tarde, sou iniciante em php e agora estava tentando controlar um loop porém sem sucesso, segue meu código:
$factsarray = 1;
while($factsarray < 3){
echo "o factsarray é menor que 3";
$factsarray++;
}
else{
echo "o facrsarray é igual a 3";
}
[code]
imagino que seja bem básico esse erro mas procurando em diversos locais não consegui entender, na função "while" não pode conter o "else" e na função "if não pode somar "+1"?
desde já agradeço a atenção.
estou tentando carregar as noticias do bd mysql, fiz mais ou menos como você falou, veja como tá o script:
<?php
$sql = "SELECT id, titulo, categoria FROM $tabela WHERE ver = '1' AND categoria = 'facts' ORDER BY data DESC LIMIT 0,5";
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");
$linha=mysql_fetch_array($resultado);
$id= $linha["id"];
$categoria= $linha["categoria"];
$titulo= $linha["titulo"];
$factsarray = 1;
if ($factsarray <= 4){
while ($factsarray <= 4) {
echo "<div id=box-facts><a class=box-facts href=http://localhost/fb/$categoria/ler.php?id=$id>$titulo</a></div>";
$factsarray++;
}
}
else{
echo "<div id=box-facts2><a class=link-normal href=http://localhost/fb/$categoria/ler.php?id=$id>$titulo</a></div>";
}
só quando a $factsarray chega a 5 ele para e não passa para carregar o 5° registro na função else.
é claro,
o php ira executar apenas o que esta dentro do if ou o que esta dentro do else.
if(condição){
se for verdadeiro executa aqui
}else{
se for falso executa aqui
}
Como $factsarray <= 4 é verdadeiro ele ira executar o que esta dentro do if. Se $factsarray tivesse um valor 5 ira ser executado o que esta dentro do else.
você deve repensar sua logica, criar um algoritimo e depois programar. Veja bem, se $factsarray tem um valor fixo (1) nem é necessario uma estrutura de controle, qual o motivo de dizer para o php "se for menor que 4..." se neste caso você ja sabe que o valor é 1 e que realmente é menor que 4.
O else nunca sera executado pois a condição do if sempre sera satisfeita
mas de acordo com o loop o valor de $factsarray vai aumentando e assim q ele chega a 5 ele para e não segue até o ELSE, é isso msmo??
consegui acertar fazendo isso:
<?php
$sql = "SELECT id, titulo, categoria FROM $tabela WHERE ver = '1' AND categoria = 'facts' ORDER BY data DESC LIMIT 0,5";
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");
$factsarray = 1;
while ($linha=mysql_fetch_array($resultado)) {
$id= $linha["id"];
$categoria= $linha["categoria"];
$titulo= $linha["titulo"];
if($factsarray <= 4) {
echo "<div id=box-facts><a class=box-facts href=http://localhost/fb/$categoria/ler.php?id=$id>$titulo</a></div>";
$factsarray+=1;
}
elseif ($factsarray == 5){
echo "<div id=box-facts2><a class=box-facts href=http://localhost/fb/$categoria/ler.php?id=$id>$titulo</a></div>";
break;
}
}
?>
eu não sei direito pq deu certo mas assim deu certo hahahahah
mas de acordo com o loop o valor de $factsarray vai aumentando e assim q ele chega a 5 ele para e não segue até o ELSE, é isso msmo??
Exato, isto porque anteriormente você estava usando o while, ou seja, enquanto a condição for verdadeira
while ($factsarray <= 4)
enquanto for menor ou igual a 4 ele executa,
ja neste ultimo script você esta usando if, se for menor ele executa, com o while tambem vai executar mas só enquanto for menor, por isso não poderia passar para o 5.
só faltou um else no final, você pode colocar tipo um echo com uma msg de erro,
você tambem poderia colocar o mysql_query dentro do $sql, assim nem precisaria do $resultado
while = enquanto
if = se
else = se não
Para usar o else tem que ter o if, não sei seu objetivo com o codigo mas teria que usar o while dentro do if
Se $factsarray < 3
Enquanto for < que 3
Senão