Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Big-D

Restrições na aleatoriedade [Resolvido]

Recommended Posts

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?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

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
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.