Jump to content

Restrições na aleatoriedade [Resolvido]


Big-D
 Share

Recommended Posts

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

<?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

Link to comment
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
 Share

×
×
  • Create New...

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.