Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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á.
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
Você tem que fazer o inner join com a tabela usuario:
E não utilizar * em suas consultas para evitar lentidão...
Segue o correto: