Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá tenho uma pagina de listar meus contatos(chat):
<div id="contatos">
<span class="online" id="<?php echo $_SESSION['id'];?>"></span>
<ul>
<?php
$selecionar_usuarios = @BD::conn()->prepare("SELECT usuarios.id, usuarios.nome, usuarios.sobrenome,usuarios.nome_imagem,amg.id_de,amg.id_para,amg.bloq,amg.acc FROM usuarios INNER JOIN amg ON amg.id_para = usuarios.id WHERE acc = '1' ORDER BY usuarios.id DESC");
$selecionar_usuarios->execute(array($_SESSION['id']));
if($selecionar_usuarios->rowCount() == 0){
echo '<p>Você não tem amigos ainda!</p>';
}else{
while($usuario = $selecionar_usuarios->fetchObject()){
?>
<?php
$usuarioo = $usuario->nome;
$limite_caracteres = substr($usuarioo,0,10);
?>
<li><span class="type" id="<?php echo $usuario->id;?>"></span>
<a href="javascript:void(0);" nome="<?php echo $usuario->nome;?>" id="<?php echo $usuario->id;?>" class="comecar"><?php echo $limite_caracteres; ?><?php
$sql = "SELECT * FROM usuarios WHERE id = ".$usuario->id;
$sql_exe = mysql_query($sql) or die (mysql_error());
while($array = mysql_fetch_array($sql_exe)){
//mostra na tela a foto
printf('<div class="img-perfil-chat"><img alt="%s" width="30" height="30" src="http://%s/teste/clientes/fotos/%s" /></div>' ,$array['nome_imagem'], $rootz, $array['nome_imagem'] );
}
?></a></li>
<?php }} ?>
</ul>
</div>
<div style="position:absolute; top:0; right:0;" id="retorno"><div>
<div id="janelas"></div>
</div>
Tabela amg:
| id | | id_de | | id_para | | bloq | | acc |
01 02 03 0 1
Bom nesta tabela amigo é o seguinte,tenho um id do tipo auto increment um id_de que pego com $_SESSION['id'] um id_para que pego com $_GET['id'] ou $perfil->id tenho um Bloq = 0,quer dizer que a pessoa não esta bloquada e um acc = 1,quer dizer que a pessoa foi aceita correto! ?
o poblema que estou tento é que eu não quero listar meu propio id e quero pegar somente os que foram aceitos ou seja do id_para mais exibir somente os amigos do id_para se o id_de == $_SESSION['id'] , entenderam ? Alguem me ajuda por favor! ?>
SELECT usuarios.id, usuarios.nome, usuarios.sobrenome,usuarios.nome_imagem,amg.id_de,amg.id_para,amg.bloq,amg.acc FROM usuarios INNER JOIN amg ON amg.id_para = usuarios.id WHERE acc = '1' and usuarios.id <> $_SESSION['id'] ORDER BY usuarios.id DESC
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\wamp\www\teste\modules\chat-web-messenger-papo.php on line 5
o que tem na linha 5?
pelo que mostra foi uma variável vazia.
de um echo nessa
>
$_SESSION['id']
para ver se retorna algum numero143 , ou seja meu Id,Esta normal :x
o que tem na linha 5 posta ai
Exatamente oque vc me passou:
SELECT usuarios.id, usuarios.nome, usuarios.sobrenome,usuarios.nome_imagem,amg.id_de,amg.id_para,amg.bloq,amg.acc FROM usuarios INNER JOIN amg ON amg.id_para = usuarios.id WHERE acc = '1' and usuarios.id <> $_SESSION['id'] ORDER BY usuarios.id DESC>
Olá tenho uma pagina de listar meus contatos(chat):
<div id="contatos">
<span class="online" id="<?php echo $_SESSION['id'];?>"></span>
<ul>
<?php
$selecionar_usuarios = @BD::conn()->prepare("SELECT usuarios.id, usuarios.nome, usuarios.sobrenome,usuarios.nome_imagem,amg.id_de,amg.id_para,amg.bloq,amg.acc FROM usuarios INNER JOIN amg ON amg.id_para = usuarios.id WHERE acc = '1' ORDER BY usuarios.id DESC");
$selecionar_usuarios->execute(array($_SESSION['id']));
if($selecionar_usuarios->rowCount() == 0){
echo '<p>Você não tem amigos ainda!</p>';
}else{
while($usuario = $selecionar_usuarios->fetchObject()){
?>
<?php
$usuarioo = $usuario->nome;
$limite_caracteres = substr($usuarioo,0,10);
?>
<li><span class="type" id="<?php echo $usuario->id;?>"></span>
<a href="javascript:void(0);" nome="<?php echo $usuario->nome;?>" id="<?php echo $usuario->id;?>" class="comecar"><?php echo $limite_caracteres; ?><?php
$sql = "SELECT * FROM usuarios WHERE id = ".$usuario->id;
$sql_exe = mysql_query($sql) or die (mysql_error());
while($array = mysql_fetch_array($sql_exe)){
//mostra na tela a foto
printf('<div class="img-perfil-chat"><img alt="%s" width="30" height="30" src="http://%s/teste/clientes/fotos/%s" /></div>' ,$array['nome_imagem'], $rootz, $array['nome_imagem'] );
}
?></a></li>
<?php }} ?>
</ul>
</div>
<div style="position:absolute; top:0; right:0;" id="retorno"><div>
<div id="janelas"></div>
</div>
Tabela amg:
| id | | id_de | | id_para | | bloq | | acc |
01 02 03 0 1
Bom nesta tabela amigo é o seguinte,tenho um id do tipo auto increment um id_de que pego com $_SESSION['id'] um id_para que pego com $_GET['id'] ou $perfil->id tenho um Bloq = 0,quer dizer que a pessoa não esta bloquada e um acc = 1,quer dizer que a pessoa foi aceita correto! ?
o poblema que estou tento é que eu não quero listar meu propio id e quero pegar somente os que foram aceitos ou seja do id_para mais exibir somente os amigos do id_para se o id_de == $_SESSION['id'] , entenderam ? Alguem me ajuda por favor! ?
1º desse modo você mostra seus amigos aceitos e entre eles mostra você tambem e isso?
2º esse id da tabela usuario e referente $_SESSION['id']?
3º esse campo id da tabela usuario e inteiro e auto increment?
1° Sim exato mais eu não queria mostras alias ,kk
2º Sim ou seja id=Id do usuario :)
se assim não funcionar tente assim
SELECT usuarios.id, usuarios.nome, usuarios.sobrenome,usuarios.nome_imagem,amg.id_de,amg.id_para,amg.bloq,amg.acc FROM usuarios
INNER JOIN amg ON (amg.id_para = usuarios.id or amg.id_de = usuarios.id)
WHERE acc = '1' and usuarios.id <> $_SESSION['id']
ORDER BY usuarios.id DESC
faz o seguinte
aqui dentro do while faz assim
while($array = mysql_fetch_array($sql_exe)){
if($array['id'] == $_SESSION['id']){
continue;
}
//mostra na tela a foto
printf('<div class="img-perfil-chat"><img alt="%s" width="30" height="30" src="http://%s/teste/clientes/fotos/%s" /></div>' ,$array['nome_imagem'], $rootz, $array['nome_imagem'] );
}Hmm mais deu erro olhe:
Parse error: syntax error, unexpected ''
Eu acho que é por causa das aspas Simples ['id'] ??
Ops eu arrumei criando uma variavel com o session e substituindo o $_SESSION pela variavel olha agr ele esta exibindo os ultimos 2 usuarios:
/applications/core/interface/imageproxy/imageproxy.php?img=http://i.imgur.com/oOfGaHb.png&key=a0bc03a88bf89ace9c5d1cdf4aec2435bc28da269ae6acd751447d3553011e97" alt="oOfGaHb.png" />
>
Hmm mais deu erro olhe:
Parse error: syntax error, unexpected ''
Eu acho que é por causa das aspas Simples ['id'] ??
kkk pow pois testa ai cara, mais fácil você ir testando que você ja esta com a pagina aberta, do que eu ficar aqui tentando adivinhar a solução :P
mas não era para dar esse problema ao menos que o campo não fosse inteiro.
mais você tentou do modo que estava funcionando antes e colocou o continue depois do while?
<div id="contatos">
<span class="online" id="<?php echo $_SESSION['id'];?>"></span>
<ul>
<?php
$selecionar_usuarios = @BD::conn()->prepare("SELECT usuarios.id, usuarios.nome, usuarios.sobrenome,usuarios.nome_imagem,amg.id_de,amg.id_para,amg.bloq,amg.acc FROM usuarios INNER JOIN amg ON amg.id_para = usuarios.id WHERE acc = '1' ORDER BY usuarios.id DESC");
$selecionar_usuarios->execute(array($_SESSION['id']));
if($selecionar_usuarios->rowCount() == 0){
echo '<p>Você não tem amigos ainda!</p>';
}else{
while($usuario = $selecionar_usuarios->fetchObject()){
?>
<?php
$usuarioo = $usuario->nome;
$limite_caracteres = substr($usuarioo,0,10);
?>
<li><span class="type" id="<?php echo $usuario->id;?>"></span>
<a href="javascript:void(0);" nome="<?php echo $usuario->nome;?>" id="<?php echo $usuario->id;?>" class="comecar"><?php echo $limite_caracteres; ?><?php
$sql = "SELECT * FROM usuarios WHERE id = ".$usuario->id;
$sql_exe = mysql_query($sql) or die (mysql_error());
while($array = mysql_fetch_array($sql_exe)){
if($array['id'] == $_SESSION['id']){continue;}
//mostra na tela a foto
printf('<div class="img-perfil-chat"><img alt="%s" width="30" height="30" src="http://%s/teste/clientes/fotos/%s" /></div>' ,$array['nome_imagem'], $rootz, $array['nome_imagem'] );
}
?></a></li>
<?php }} ?>
</ul>
</div>
<div style="position:absolute; top:0; right:0;" id="retorno"><div>
<div id="janelas"></div>
</div>>
Hmm mais deu erro olhe:
Parse error: syntax error, unexpected ''
Eu acho que é por causa das aspas Simples ['id'] ??
Ops eu arrumei criando uma variavel com o session e substituindo o $_SESSION pela variavel olha agr ele esta exibindo os ultimos 2 usuarios:
/applications/core/interface/imageproxy/imageproxy.php?img=http://i.imgur.com/oOfGaHb.png&key=a0bc03a88bf89ace9c5d1cdf4aec2435bc28da269ae6acd751447d3553011e97" alt="oOfGaHb.png" />
Coloquei agora o poblema é este!!!
Coloquei agora o poblema é o de cima
mais deu certo ou não ?
outra coisa faça o teste o inner join assim cara
INNER JOIN amg ON (amg.id_para = usuarios.id or amg.id_de = usuarios.id)
sabe por que, do modo que estava antes estava trazendo apenas os amigos que você estava aceitando ou seja id.para
mais no caso se fosse você que tive-se enviado o pedido no caso seu id vai estar em id_de, e você seria amigo dele mais não iria mostrar.
Ainda deu no mesmo pq tipo ele esta selecionando todos os usuario que estao com acc = 1 ou seja vai exibir ate pra quem nao é amigo como um exemplo nesta imagem
/applications/core/interface/imageproxy/imageproxy.php?img=http://i.imgur.com/68CHKKP.png&key=2eb3627f13fcc6f5af951924e6aa7dcbff3caf07a94058d653be01531a533115" alt="68CHKKP.png" />
e por que no select deve estar assim
SELECT usuarios.id, usuarios.nome, usuarios.sobrenome,usuarios.nome_imagem,amg.id_de,amg.id_para,amg.bloq,amg.acc FROM usuarios
INNER JOIN amg ON (amg.id_para = usuarios.id or amg.id_de = usuarios.id)
WHERE acc = '1' and usuarios.id = $_SESSION['id']
ORDER BY usuarios.id DESC
dessa forma vai trazer todos os aceitos com o id do usuario igual ao seu
e no while dessa forma
while($array = mysql_fetch_array($sql_exe)){
if($array['id'] == $_SESSION['id']){continue;}
//mostra na tela a foto
printf('<div class="img-perfil-chat"><img alt="%s" width="30" height="30" src="http://%s/teste/clientes/fotos/%s" /></div>' ,$array['nome_imagem'], $rootz, $array['nome_imagem'] );
}Fiz exatamente oque vc pediu aew acima e ta exibindo só o usuario logado!
posta novamente a pagina com as alterações feitas
<div id="contatos">
<span class="online" id="<?php echo $_SESSION['id'];?>"></span>
<ul>
<?php
$id = $_SESSION['id'];
$selecionar_usuarios = @BD::conn()->prepare("SELECT usuarios.id, usuarios.nome, usuarios.sobrenome,usuarios.nome_imagem,amg.id_de,amg.id_para,amg.bloq,amg.acc FROM usuarios INNER JOIN amg ON (amg.id_para = usuarios.id or amg.id_de = usuarios.id) WHERE acc = '1' and usuarios.id = $id ORDER BY usuarios.id DESC");
$selecionar_usuarios->execute(array($_SESSION['id']));
if($selecionar_usuarios->rowCount() == 0){
echo '<p>Você não tem amigos ainda!</p>';
}else{
while($usuario = $selecionar_usuarios->fetchObject()){
?>
<?php
$usuarioo = $usuario->nome;
$limite_caracteres = substr($usuarioo,0,10);
?>
<li><span class="type" id="<?php echo $usuario->id;?>"></span>
<a href="javascript:void(0);" nome="<?php echo $usuario->nome;?>" id="<?php echo $usuario->id;?>" class="comecar"><?php echo $limite_caracteres; ?><?php
$sql = "SELECT * FROM usuarios WHERE id = ".$usuario->id;
$sql_exe = mysql_query($sql) or die (mysql_error());
while($array = mysql_fetch_array($sql_exe)){
if($array['id'] == $_SESSION['id']){continue;}
//mostra na tela a foto
printf('<div class="img-perfil-chat"><img alt="%s" width="30" height="30" src="http://%s/teste/clientes/fotos/%s" /></div>' ,$array['nome_imagem'], $rootz, $array['nome_imagem'] );
}
?></a></li>
<?php }} ?>
</ul>
</div>
<div style="position:absolute; top:0; right:0;" id="retorno"><div>
<div id="janelas"></div>
</div>e quem não esta online tem seu id na tabela de amigo
id_para ou id_de?
Sim,online ou não tanto faz!
mostra ai os registros que estão da tabela de amigos e usuarios
se seu id for 143 só vai mostrar na sua lista de amigos o id 5.
entao eu devo tirar este campo id aew ?
entao eu devo tirar este campo id aew ?
no caso desses dados so vai retornar 1 amigo mesmo, por que onde tem o seu id e apenas em um registro que e justa,mente id da tabela de amigos = 5
faça um teste coloque um outro amigo.
e poste o resultado re retornou na consulta, e os registros que tem no banco de dados