Ir para conteúdo

Arquivado

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

fye ♪

Busca relacionada

Recommended Posts

pessoal, boa tarde, eu tenho o seguinte ambiente

Banco de dados - Tabela - lns_login
Banco de dados - Colunas - lns_log_usu_id
lns_log_usu_nome

Em ID estão os identificadores únicos de todos os users que se repetem em todas as tabelas

Banco de dados - Tabela - lns_msgs
Banco de dados - Colunas - lns_msg_usu_id
lns_msg_usu_rel
lsn_msg_message

Em Id ele guarda a ID de quem enviou a msg para buscar o nome em lns login, funciona perfeitamente quando eu busco apenas um usuário, mas em uma certa aplicação, eu não consigo buscar o nome do usuário, ele só retorna campo em branco, ou o identificador, não da erro, apenas não mostra nada.

Nesta aplicação, ele só exibe a identificação, se eu pedir para mostrar o nome, ele retorna erro, fiz uma relação e trouxe em branco

<ul id="myList">
<?php $buscar_mensagem_usuario = mysql_query("SELECT * FROM lns_msgs WHERE lns_msg_usu_id = ".$usuario['lns_log_usu_id']." OR lns_msg_usu_rel = ".$usuario['lns_log_usu_id']." ORDER BY lns_msg_id DESC");
if(mysql_num_rows($buscar_mensagem_usuario) == 0){?>
<li class="mensagem_usuario">
<span>Nenhumma msg postada, que tal postar a primeira?</span>

<?php } else {
while($linha = mysql_fetch_array($buscar_mensagem_usuario)){?>
<li class="mensagem_usuario">
<span class="capitalize usu_nome_msg"><?php echo $linha['lns_msg_usu_id'];?>: </span>
<span><?php echo nl2br(ucfirst(htmlentities(utf8_decode($linha['lsn_msg_message']))));?></span>

<?php }}?>



já nesta, traz normalmente o nome do usuário, mas por que só existe a busca única sobre ele

<ul id="myList">
<?php $buscar_mensagem_usuario = mysql_query("SELECT * FROM lns_msgs WHERE lns_msg_usu_id = ".$usuario['lns_log_usu_id']." AND lns_msg_usu_rel = ".$usuario['lns_log_usu_id']." ORDER BY lns_msg_id DESC");
if(mysql_num_rows($buscar_mensagem_usuario) == 0){?>
<li class="mensagem_usuario">
<span><label class="capitalize"><?php echo $usuario['lns_log_usu_nome'];?></label> não postou nada ainda!</span>

<?php } else {
while($linha = mysql_fetch_array($buscar_mensagem_usuario)){?>
<li class="mensagem_usuario">
<span class="capitalize usu_nome_msg"><?php echo $usuario['lns_log_usu_nome'];?>: </span>
<span><?php echo nl2br(ucfirst(htmlentities(utf8_decode($linha['lsn_msg_message']))));?></span>

<?php }}?>



como faço para buscar o nome relacionado ao identificador dentro do WHILE ?

grato desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que fazer o inner join com a tabela usuario:

 

$buscar_mensagem_usuario = mysql_query("SELECT b.Ins_log_usu_nome, a.Ins_msg_message FROM lns_msgs a inner join Ins_login b on a.lns_msg_usu_id = b.Ins_log_usu_id WHERE a.lns_msg_usu_id = ".$usuario['lns_log_usu_id']." AND a.lns_msg_usu_rel = ".$usuario['lns_log_usu_id']." ORDER BY a.lns_msg_id DESC");

 

E não utilizar * em suas consultas para evitar lentidão...



Segue o correto:

 

$buscar_mensagem_usuario = mysql_query("SELECT b.Ins_log_usu_nome, a.Isn_msg_message FROM lns_msgs a inner join Ins_login b on a.lns_msg_usu_id = b.Ins_log_usu_id WHERE a.lns_msg_usu_id = ".$usuario['lns_log_usu_id']." AND a.lns_msg_usu_rel = ".$usuario['lns_log_usu_id']." ORDER BY a.lns_msg_id DESC");

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara obrigado, só mudando pouca coisa

 

$buscar_mensagem_usuario = mysql_query("SELECT b.lns_log_usu_nome, a.lsn_msg_message FROM lns_msgs a inner join lns_login b on a.lns_msg_usu_id = b.lns_log_usu_id WHERE a.lns_msg_usu_id = ".$usuario['lns_log_usu_id']." OR a.lns_msg_usu_rel = ".$usuario['lns_log_usu_id']." ORDER BY a.lns_msg_id DESC") or die ( mysql_error());

 

no caso no final é OR para pegar um ou outro que é diferente de selfie que é AND que é só ele e nenhum outro,

 

e então busca o nome de ususário <span class="capitalize usu_nome_msg"><?php echo $linha['lns_log_usu_nome'];?>: </span>

 

 

grato mesmo

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.