Ir para conteúdo

POWERED BY:

Arquivado

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

MelkorValar

sistema de seguidores/amigos

Recommended Posts

ola pessoal, continuando minha empreitada com meu primeiro sistema em php, estou empacado num sistema de seguidores/amigos... é o seguinte tenho a seguinte tabela de seguidores....

 

id_seguidor //este sera somente um autoincrement

id_seguido //este armazenara o id do usuario que sera seguido/ quem estou add como amigo

id_seguidor //este armazenara o id de quem esta seguindo/ quem solicita amizade

 

Ja fiz a parte de salvar estes dados no DB

 

e tenho tambem a tabela de usuarios (vou colocar somente os dados que quero utilizar) com as tabelas...

 

id_usuario//autoincrement

path_foto // armazena a foto principal do usuario.

 

 

A minha dificuldade esta em pegar a foto do usuario que esta sendo seguido...

 

tipo

//aqui eu pego todas as tabelas de "seguidores" quando o "seguidor" for o usuario com o perfil amostra
$seguidores = mysql_query("SELECT * FROM seguidores where id_seguidor = '$usuario' ") or die (mysql_error());

 

<?php

// aqui que esta minha confusão, como fasso para mostrar todas as "path_foto" na tabela usuarios dos usuarios que estao sendo seguido.

 

$contar = 0;

$qtd_seguidores = 0;

while ($grupo = mysql_fetch_assoc($seguidores)){

$seguidor = $grupo["id_user_seguidor"];

$qtd_seguidores++;

if ($contar == 3) {

$contar = 0;

echo "<br>";

}

$mostrar = $get_foto["foto"];

echo("<div id='imagem'><img src='".$mostrar."' height='85' width='85' title= '$bloco[nome]' /></div> ");

$contar++;

}

?>

 

se alguem puder me ajudar eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que inner join resolve o seu problema. Ex:

 

SELECT seguidores.id_seguidor, seguidores.id_seguido, usuario.path_foto FROM seguidores INNER JOIN usuarios WHERE usuarios.id = seguidores.id_seguido AND id_seguidor = '$usuario'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que inner join resolve o seu problema. Ex:

 

SELECT seguidores.id_seguidor, seguidores.id_seguido, usuario.path_foto FROM seguidores INNER JOIN usuarios WHERE usuarios.id = seguidores.id_seguido AND id_seguidor = '$usuario'

 

 

Ramon, é essa a logica mesmo que eu estava querendo, fiz uma pequena mudanã para bater com meu DB e ficou desse geito...

 

$teste = mysql_query("SELECT seguidores.id_seguidor, seguidores.id_seguido, usuario.path_foto FROM seguidores INNER JOIN usuarios WHERE usuarios.usuario_id = seguidores.id_seguido AND id_seguidor = '$usuario'");

 

 

e parte que iria mostrar as fotos dos perfis dos usuarios com os link para o msm esta assim...

 

<?php
$contar = 0;
$qtd_seguidores = 0;
while ($teste1 = mysql_fetch_assoc($teste)){
               $seguido = $teste1["id_seguido"];
	$qtd_seguidores++; 
	echo "<br>".$seguido."<br>";
	if ($contar == 3) {
		$contar = 0;							
		echo "<br>";
	}
	$contar++;
}
?>

 

Acima somente estou colocando para mostrar o id dos usuarios que estao sendo seguido, mas nao esta aparecendo dados nenhum, sera que você saberia o pq de nao aparecer os dados?

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser um erro de lógica, ou simplesmente o seu select não retornou nada. Verifique se o usuário que você está testando, realmente está seguindo outro.

 

Dica:

 

Utilize a função mysql_num_rows() ao invés de criar um contador para pegar o numero de seguidores, ex:

 

<?php
       $contar = 0;
       $qtd_seguidores =  mysql_num_rows($teste);
       while ($teste1 = mysql_fetch_assoc($teste)){
               $seguido = $teste1["id_seguido"];
               echo "<br>".$seguido."<br>";
               if ($contar == 3) {
                       $contar = 0;                                                    
                       echo "<br>";
               }
               $contar++;
       }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser um erro de lógica, ou simplesmente o seu select não retornou nada. Verifique se o usuário que você está testando, realmente está seguindo outro.

 

Dica:

 

Utilize a função mysql_num_rows() ao invés de criar um contador para pegar o numero de seguidores, ex:

 

<?php
       $contar = 0;
       $qtd_seguidores =  mysql_num_rows($teste);
       while ($teste1 = mysql_fetch_assoc($teste)){
               $seguido = $teste1["id_seguido"];
               echo "<br>".$seguido."<br>";
               if ($contar == 3) {
                       $contar = 0;                                                    
                       echo "<br>";
               }
               $contar++;
       }
?>

 

Nao seria melhor ele manter o $qtd_seguidores como antes nao?? Seria bem mais pratico e mais rapido do que sempre chamar o BD somente para fazer essa contagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal agradeço a ajuda de todos ai e desculpe a demora pra responder, net aqui em casa ta f***.

 

Entaum to achando que o erro ta sendo aqui...

 

$teste = mysql_query("SELECT seguidores.id_seguidor, seguidores.id_seguido, usuario.path_foto FROM seguidores INNER JOIN usuarios WHERE usuarios.usuario_id = seguidores.id_seguido AND id_seguidor = '$usuario'");

 

to achando q não esta buscando nada ai. as tabelas sao as mesmas dai.

 

abç aguardo ajuda.

 

ahh ainda nao tive tempo mas vou testar as pociveis soluçoes acima

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fonseca,

 

Fiz desse geito que você falou e não deu certo, coloquei um echo dentro do While só pra ver se entrava la e nao apareceu a string entao nem no while nao esta entrando.

 

tem alguma ideia do que esta acontecendo?

 

agradeço a ajuda de todos.

 

Valeu Ramon e Fonseca,

 

coloquei a dica do Ramon de echo mysql_error() e me mostrou que usuario.foto nao tinha sido definido, o certo seria "usuarios.foto" ai o que o Fonseca tinha me passado ficou certo agora ta funfando.

 

abrigadao ai pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como não tenho acesso aos dados das tabelas, não pude confirmar se dá certo.

Sei lá, vai que ajuda...

 

<?php
// Sendo a conexão:
$CONEXAO = mysql_connect($hostname, $username, $password);

// Informação do usuário deve ser tratada
// como se fosse mal-intencionada.
$usuario = mysql_real_escape_string($usario, $CONEXAO);

// Vale notar que quando usamos "JOIN"
// não usamos "WHERE", e sim "ON".
$resource = mysql_query("
   SELECT s.id_seguidor, s.id_seguido, u.path_foto
   FROM seguidores AS s
   LEFT JOIN usuarios AS u
   ON u.usuario_id = s.id_seguido
   WHERE s.id_seguidor = '$usuario'");

while ($obj = mysql_fetch_object($resource)) {
   echo $obj->path_foto;
}

// É claro que nada disto foi testado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala pessoal, aproveitando o topico aqui eu gostaria de tirar mais uma duvida que ta quebrando minha cabeça mesmo porque acho que a logica esta certa

 

É o seguinte essa parte de cima deu certo ja e eu to colocando um link no perfil de um usuario e só mostrar esse link se o mesmo não estiver sendo seguido pelo perfil com o login. fiz o seguinte

 

Aqui eu pego todos os seguidos pelo usuario logado

$testa_seguidores = mysql_query("SELECT seguidores.id_seguidor, seguidores.id_seguido FROM seguidores WHERE id_seguidor = '".$_SESSION['usuario_id']."'");

 

Aqui eu comparo se o usuario que estou visitando esta relacionado com o seguidor que no caso é o usuario logado(se ja esta sendo seguido pelo usuario logado)

while ($teste_seguidores = mysql_fetch_assoc($testa_seguidores)){
if ($usuario == $teste_seguidores["id_seguido"]){
	echo "<br><br>Você já Segue este usuario!";
	echo "<br><br> Usuario: " .$usuario. "<br>Seguido: " .$teste_seguidores['id_seguido']. "";
}else{			
	echo "<br><br>Seguir este usuario? ";
	echo "<a href=\"add_seguidor.php?a=$bloco[usuario_id]&b=".$_SESSION['usuario_id']."\">Perfil</a>";
	echo "<br><br> Usuario: ".$usuario."<br>Seguido: ".$teste_seguidores['id_seguido']."";
}
}

 

 

Quando coloco o codigo acima aparece exatamente os dados q eu desejo mas de forma errada... aparece assim oh...

 

Seguir este usuario? Perfil

Usuario: 4
Seguido: 3

Seguir este usuario? Perfil

Usuario: 4
Seguido: 12

Seguir este usuario? Perfil

Usuario: 4
Seguido: 5

 

como faço para aparecer somente uma das mensagens e depois sair do loop? tentei por um breack mas nao deu certo.

flw

 

Putz pessoal desculpe pela pergunta idiota que fiz ai encima krai deve ser o sono não é possivel que perguntei isso. vlw obrigadao ja esta resolvido. como ponho RESOLVIDO neste topico? flw

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.