Ir para conteúdo

Arquivado

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

Landerson Almeida

Pequeno Poblema

Recommended Posts

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! ?

Compartilhar este post


Link para o post
Compartilhar em outros sites


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

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 numero

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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'] );
}

desse modo quando chegar no usuário igual ao seu id ele vai pular para próxima linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

 

 

oOfGaHb.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

 

 

oOfGaHb.png

Coloquei agora o poblema é este!!!

Coloquei agora o poblema é o de cima

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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'] );
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta novamente a pagina com as alterações feitas

Compartilhar este post


Link para o post
Compartilhar em outros sites


<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>

Compartilhar este post


Link para o post
Compartilhar em outros sites

e quem não esta online tem seu id na tabela de amigo

id_para ou id_de?

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.