Ir para conteúdo

POWERED BY:

Arquivado

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

rodrigojacinto

o que está errado nesse while dentro de while

Recommended Posts

Boa tarde..

o que será que está errado nesse codigo:

<?php
// Dados de acesso ao servidor MySQL
include ('conexao.php');

// Conexão com o banco de dados
$conecta = mysqli_connect($MySQL['servidor'], $MySQL['usuario'], $MySQL['senha'], $MySQL['banco']) or die("Error " . mysqli_error($conecta)); 

// FAZ A CONSULTA na tabela noticias_lidas onde estao os links que o usuario ja clicou, trazendo somente os registro onde o id_membro for diferente do id_membro_logado que é o usuario logado, ou seja TRAZ OS REGISTRO DE IDS QUE AINDA NAO FORAM CLICADOS
$consulta = "select * from noticias_lidas where id_membro = '$id_membro_logado' " or die("Error in the consult.." . mysqli_error($consulta)); 

// Execute a consulta 
$resultado = $conecta->query($consulta); 
while($linha = $resultado -> fetch_assoc()){
   
   //echo '<p>'.$linha["id_link"].'</p>';
			
			//id_link na tabela noticias_lidas é o numero do id da tabela noticias
			$filtro = $linha["id_link"];
   			// a intenção aqui é fazer a busca na tabela noticias e mostrar somente os que forem diferentes dos resultados encontrados na pesquisa acima, ou seja os links ainda nao lidos
			$consulta2 = "select * from noticias where id <> '$filtro' " or die("Error in the consult.." . mysqli_error($consulta2)); 

			$resultado2 = $conecta->query($consulta2); 
			while($linha2 = $resultado2 -> fetch_assoc()){
			
			echo $linha2["titulo"]."</br>";
			
				
			}

}; 

?>

A intenção é na $consulta pegar os ids de noticias já lidas para que na $consulta2 esses ids nao sejam utilizados para exibir os registro.

 

em vez disso o resultado é:

ele deveria excluir da exibição os ids 1 e 6 , porem mostra as noticias uma vez sem o item 1 e deposi mostra as noticias novamente sem o item 6, mostra duas vezes cadas uma sem o item que realmente nao era para mostrar...

 

agradeço desde já..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou colocar tudo em uma consulta só para não precisar de dois whiles?

SELECT * FROM nome_tabela WHERE condicao1 And condicao2

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Já tentou colocar tudo em uma consulta só para não precisar de dois whiles?

SELECT * FROM nome_tabela WHERE condicao1 And condicao2

não tem como pois sao duas tabelas diferentes, por exemplo a tabela noticias tem varias noticias, eu quero que quando a consulta fosse realizada nao aparecesse as noticias que o usuario ja clicou, por isso criei a outra tabela de noticias_lidas, assim quando ele clicar em uma noticia alimenta essa tabela com o id dele e da noticia que ele leu, ja tentei com uma tabela apenas, mas ai nao sei como por exemplo nao mostrar as noticias que ele ja leu.. entende..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é necessário while dentro de outro. Quando você insere outra consulta dentro de um whlie, ela já está sendo repetira no loop.

 

Utilize um IF dentro do while para verificar se o ID do usuário está na tabela das notícias lidas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente usar 1 query só, é melhor, mesmo você já tendo dado como resolvido, vou comentar, rs. tente o seguinte:

SELECT * FROM noticias n, noticias_lidas r WHERE n.id_da_noticia != r.id_da_noticia_lida

acredito que funcione desta maneira ;D

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.