Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

flagking

Consulta PHP / MySQL dentro de outra consulta repete valores nulos?

Recommended Posts

Pessoal, é o seguinte:

Eu faço uma consulta num BD de mensagens. Dentro desta consulta, antes de fechar o WHILE, faço outra consulta pra buscar, por exemplo, o horário da última postagem naquele tópico de mensagens. Até aí, td bem.
O problema é que quando o registro não existe, ele repete indefinidamente, até existir outro. EXEMPLO:

Mensagem 1: A cor azul é feia. Escrito por fulaninho de tal, 12h.
Mensagem 2: A cor preta é legal. Escrito por beltraneto de paula, 14h.
Mensagem 3: A cor vermelha é forte. Sem Horário.
Mensagem 4: A cor amarela é fraca... Sem Horário.
Mensagem 5: A cor rôxa é nervosa... 23h
E assim por diante.

O retorno do resultado vem assim:

Azul - 12h
Preta - 14h
Vermelha - 14h
Amarela - 14h
Rôxa 23h.


Como faço pra, qdo não tem horário gravado, retornar um valor nulo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o código para facilitar a ajuda, mais pelo que entendi na query você tem que por uma condição para evitar isso.

ex:

$busca = $pdo->prepare("SELECT * FROM posts WHERE horario != '' ORDER BY id DESC");

$busca->execute();

 

No caso das aspas simples na variável $busca para dizer que se não houver conteúdo no campo não mostra-lo. Isso aí e mais ou menos oque você quer....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gleyson, mto obrigado pela resposta que, perdão, somente fui ver agora. Eu tinha desistido desse código, mas agora vou precisar implementá-lo.
Segue abaixo a lógica e o código:

 

#Separando por categorias
$sql2 = mysql_query ("SELECT * FROM forum_topicos WHERE id_cat = '$indice' AND status = '0' ORDER BY data_atual DESC") or die (mysql_error());
while($linha2 = mysql_fetch_array($sql2)){;
$id_topico = $linha2['id'];
$tit_topico = $linha2['titulo_topico'];

#Ok, esta consulta acima busca tópicos de um forum de discussão e mantém o While aberto.
#Continua:

#Definindo a data da última postagem
$sql = mysql_query("SELECT * FROM view_topic WHERE id_topico = '$id_topico' AND id_user = '$id_user' ORDER BY data_view DESC LIMIT 1");
while($dados = mysql_fetch_array($sql)) {
$data_view = $dados['data_view'];
}

#Aqui o resultado sai assim, por exemplo:
#Tópico 1 - Data 23/05
#Tópico 2 - Data 29/05
#E assim por diante.
#O problema é que, por exemplo, o tópico 5 e 6 não tiveram postagens. 
#Aí ele repete a data do tópico 4 [anterior] até que um novo tópico tenha uma postagem com data.
#Tópico 4 - Data 01/06
#Tópico 5 - Data 01/06 [repete do 4]
#Tópico 6 - Data 01/06 [repete do 5, que repetiu do 4]
#Tópico 7 - data 03/06...

#E aí fecha o While inicial.

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que acabei de resolver o problema colocando a exclamação antes do sinal de igual: id_topico != $id_topico. MTO obrigado!

 

Edit:

Ultima forma. Não era isso, não... Continuo trabalhando nisso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.