Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Big-D

Restrições na aleatoriedade [Resolvido]

Mensagens Recomendadas

Big-D

Boas!

Eu tenho o seguinte código:

<?php
// Create the connection and select the DB
$link = mysql_connect("localhost","root","");

if ($link) {
   mysql_selectdb("supless",$link);
   
   // Select records from the DB
   $query  = "SELECT * FROM receitas ORDER BY Rand() LIMIT 1";
   $result = mysql_query($query);


   // Display records from the table
   echo "<table border='0' width='20'>";
   while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
   	   if($row[3] == '1'){
     echo "<tr><td><img width='75' height='75' src=\"backoffice/images/thumbs/$row[2]\" /></td><td>$row[1]</td></tr>";
   }else{ 
   }
   }
   echo "</table>";
} else {
    echo "Can't connect to the database!";
}
?>

Nele eu faço com que ele me mostre aleatoriamente as receitas guardadas na base de dados, mas as receitas podem ou não estar visíveis, ou seja, se receita 1 tiver no campo visível 1 ele mostra se tiver 0 nao mostra. Isto funciona só que há um senão eu tenho 3 receitas duas visíveis e uma invisível, fazendo o random quando ele chega á que está invisível ele mostra um espaço vazio .

O que poderei mudar para que ele só mostre as receitas visíveis?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

1. Para que é o while, se só vem um registo de cada vez (via LIMIT 1)?

2. Substituindo o while por um if, passas o <table> e o </table> para dentro do mesmo if da visibilidade e ficas com o problema resolvido.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Big-D

Se calhar não me expliquei bem ou se calhar não percebi bem mas o meu problema é o seguinte:

Receita 1 - visível

Receita 2 - visível

Receita 3 - invisível

Se tiver visível ele mostra sempre e caso esteja invisível ele mostra um espaço branco.

O que eu quero é que ele veja se for visível mostra se for invisível mostra uma que seja visível.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Isto é, não queres que na query venham invisíveis, é isso? Então é ainda mais fácil: em vez de controlares a visibilidade no PHP, controlas no SQL:

$query  = "SELECT * FROM receitas WHERE campo_da_visibilidade = 1 ORDER BY Rand() LIMIT 1";
$result = mysql_query($query);

echo "<table border='0' width='20'>";
// este while é absolutamente desnecessário - só vem uma linha, mesmo
while ($row = mysql_fetch_array($result, MYSQL_NUM))
    echo "<tr><td><img width='75' height='75' src=\"backoffice/images/thumbs/$row[2]\" /></td><td>$row[1]</td></tr>";

echo "</table>";
?>


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfr

<?php
// Create the connection and select the DB
$link = mysql_connect("localhost","root","");

if ($link) {
   mysql_selectdb("supless",$link);
   
   // Select records from the DB
   $query  = "SELECT * FROM receitas WHERE visivel=1 ORDER BY Rand() LIMIT 1";
   $result = mysql_query($query);


   // Display records from the table
   echo "<table border='0' width='20'>";
   while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
                   if($row[3] == '1'){
     echo "<tr><td><img width='75' height='75' src=\"backoffice/images/thumbs/$row[2]\" /></td><td>$row[1]</td></tr>";
           }else{ 
           }
   }
   echo "</table>";
} else {
    echo "Can't connect to the database!";
}
?>


tenta assim

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Big-D

Epah, eu ja tinha tentado  por o "WHERE visivel" com a única diferença que não me tinha lembrado de por o "WHERE visivel=1", mas pronto está a funcionar na perfeição.

Muito obrigado aos dois.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.