Ir para conteúdo

POWERED BY:

Arquivado

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

manoaj

[Resolvido] amizade entre usuarios

Recommended Posts

pessoal to com uma duvida aqui , assim eu tenho uma tabela que vai servir pra vericar a se os usuarios do meu site são amigos e nessa tabela eu tenho os campos user_amigo , user_recept e status_amigo.

 

o campo user_amigo é o campo que vai receber o id do suario que enviou a solicitação de amizade e o campo user_recept é o campo do usuario que vai aceitar ou não essa amizade

e o campo status_amigo é o campo que fala se o user_amigo é amigo ou não do user_recept.

 

 

ai o que eu quero faser e não estou conssguindo é o seguinte quero motar algo para verificar se o usuario que esta vendo o perfil do outro no caso o usuario que esta logadoe vendo o perfil de outro é ou não amigo daquela pessoa ,

 

se o usuario for amigo daquela pessoa exibe o link remover amizade ,

se o usuario não for amigo daquela pessoa exibe o link adicionar aos amigos,

 

no caso eu to pegando os ids dos usuarios um por session que é o id do usuario que esta logado e o outro id por um get que no caso é o id do perfil do usuario que esta sendo visualizado.

 

como eu faço pra colocar isso aqui em pratica

 

:ermm:se o usuario for amigo daquela pessoa exibe o link remover amizade ,

se o usuario não for amigo daquela pessoa exibe o link adicionar aos amigos,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara você ta fazendo uma rede social né, já vi uns 5 tópicos seus com dúvidas parecidas com coisas de rede soiciais;

não é um site normal só que ai eu quero que ele fique tipo o forum aqui pra ter mais interação com os usuarios ai nãoq uero pegar nem ipb nem um script pronto pq como to aprendendo agora e to fasendo curso de web ai eu to fasendo o site eu mesmo kkkk as duvidas são em relação a redes sociasi pq o forum é quase uma rede seila kkk

mecho com rede social não coisa de doido aquilo kkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lek faz o site normal e faz um forum com phpbb então, é mais fácil e é exatamente oque vocÊ quer!

não mano você não intendeu o que eu realmente quero é aprender e montando esse site eu consseguir isto porisso quero fazer desta forma , assim eu aprendo mais facil :D tudo se resume em pratica ! pratica e mais pratica! nenão :D :ermm:

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara para verificar se é amigo ou não, você pode realizar uma consulta na tabela status_amigo e enviar o id do usuario logado e do usuário que ele está visualizando o perfil.

Caso retorne algum valor então eles são amigos, logo você exibe o link de remover amizade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara mas tem a questão dele estar aceito como amigo ou não pq a tabela status serviria para isso onde os valores seriam pendente e aprovado ai é que tá o problema , pq tem qeu consultar se existe e qual o status só que não se de que forma faser todas essas verificações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara mas tema questão dele estar aceito como amigo ou não pq a tabela status serviria para isso onde os valores seriam pendente e aprovado ai é que tá o problema , pq temq eu consultar se existe e qual o status só que não se de que forma faser todas essas verificações.

 

Eu não entendi bem o que você quis dizer, tem como postar a estrutura da tabela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não entendi bem o que você quis dizer, tem como postar a estrutura da tabela?

 

 

 

tipo de que forma eu faço esse select pra verificar se a pessoa que eu to visualizando é meu amigo e se o status estA aprovado ou não pq se o status não estiver aprovado ela não deve aparecer como amigo .

 

CREATE TABLE IF NOT EXISTS `amigos` (

`user_amigo` text NOT NULL,

`user_recept` text NOT NULL,

`status_amigo` enum('pendente','aprovado') NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo de que forma eu faço esse select pra verificar se a pessoa que eu to visualizando é meu amigo e se o status estA aprovado ou não pq se o status não estiver aprovado ela não deve aparecer como amigo .

 

CREATE TABLE IF NOT EXISTS `amigos` (

`user_amigo` text NOT NULL,

`user_recept` text NOT NULL,

`status_amigo` enum('pendente','aprovado') NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

Eu não sei como está estruturado seu código mais você pode fazer assim:

SELECT status_amigo FROM amigos WHERE user_amigo = '{$id_solicitante}' AND user_recept = '{$id_receptivo}';

Se retornar nenhuma linha quer dizer que ele não é amigo e nem tem uma solicitação pendente.

Caso retorne status_amigo = pendente, quer dizer que ele adicionou o usuário porém ele não aceitou ainda.

Caso retorne status_amigo = aprovado, quer dizer que eles são amigos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que status_amigo não é um nome com o significado apropriado pro que a tabela faz.

 

Veja, se você já tem uma tabela de requisições, o que vai para status_amigo devem ser as aprovações.

 

friendship_request

  • Requester é uma chave estrangeira apontando para o id de usuario
  • Asked é uma chave estrangeira apontando para o id de usuario
  • Ambos os campos constituem um índice do tipo UNIQUE

 

Quando um usuário visita um perfil, é feita uma consulta para verificar se já existe a requisição de amizade.

Sendo $user_id o ID do usuário logado e $profile_id o ID do perfil visitado, fica assim:

select count(asked) from friendship_request where requester = $user_id and asked = $profile_id

 

0 resulta em não solicitado e 1 resulta em solicitado.

 

friendship

  • User é uma chave estrangeira apontando para o id de usuario
  • Friend é uma chave estrangeira apontando para o id de usuario
  • Ambos os campos constituem um índice do tipo UNIQUE

 

Para verificarmos se já existe a amizade, a consulta é muito similar

select count(friend) from friendship where user = $user_id and friend = $profile_id

 

Novamente, 0 resulta em não amigos e 1 resulta em amigos.

 

Toda e qualquer outra alteração no vínculo de amizade deve se dar por outra tabela. Exemplos são pedido de amizade não aceito, vínculo de amizade desfeito, usuário bloqueado, vínculos familiares entre outros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que status_amigo não é um nome com o significado apropriado pro que a tabela faz.

 

Veja, se você já tem uma tabela de requisições, o que vai para status_amigo devem ser as aprovações.

 

friendship_request

  • Requester é uma chave estrangeira apontando para o id de usuario
  • Asked é uma chave estrangeira apontando para o id de usuario
  • Ambos os campos constituem um índice do tipo UNIQUE

 

Quando um usuário visita um perfil, é feita uma consulta para verificar se já existe a requisição de amizade.

Sendo $user_id o ID do usuário logado e $profile_id o ID do perfil visitado, fica assim:

select count(asked) from friendship_request where requester = $user_id and asked = $profile_id

 

0 resulta em não solicitado e 1 resulta em solicitado.

 

friendship

  • User é uma chave estrangeira apontando para o id de usuario
  • Friend é uma chave estrangeira apontando para o id de usuario
  • Ambos os campos constituem um índice do tipo UNIQUE

 

Para verificarmos se já existe a amizade, a consulta é muito similar

select count(friend) from friendship where user = $user_id and friend = $profile_id

 

Novamente, 0 resulta em não amigos e 1 resulta em amigos.

 

Toda e qualquer outra alteração no vínculo de amizade deve se dar por outra tabela. Exemplos são pedido de amizade não aceito, vínculo de amizade desfeito, usuário bloqueado, vínculos familiares entre outros.

A ENTENDI ETÃO QUER DISER A QUE AS APROVAÇÕES FICARIAM EM OUTRA TABELA JUNTO COM OUTRAS INFORMAÇÕES COMO BLOQUEIO E ETC?

 

Acho que status_amigo não é um nome com o significado apropriado pro que a tabela faz.

 

Veja, se você já tem uma tabela de requisições, o que vai para status_amigo devem ser as aprovações.

 

friendship_request

  • Requester é uma chave estrangeira apontando para o id de usuario
  • Asked é uma chave estrangeira apontando para o id de usuario
  • Ambos os campos constituem um índice do tipo UNIQUE

 

Quando um usuário visita um perfil, é feita uma consulta para verificar se já existe a requisição de amizade.

Sendo $user_id o ID do usuário logado e $profile_id o ID do perfil visitado, fica assim:

select count(asked) from friendship_request where requester = $user_id and asked = $profile_id

 

0 resulta em não solicitado e 1 resulta em solicitado.

 

friendship

  • User é uma chave estrangeira apontando para o id de usuario
  • Friend é uma chave estrangeira apontando para o id de usuario
  • Ambos os campos constituem um índice do tipo UNIQUE

 

Para verificarmos se já existe a amizade, a consulta é muito similar

select count(friend) from friendship where user = $user_id and friend = $profile_id

 

Novamente, 0 resulta em não amigos e 1 resulta em amigos.

 

Toda e qualquer outra alteração no vínculo de amizade deve se dar por outra tabela. Exemplos são pedido de amizade não aceito, vínculo de amizade desfeito, usuário bloqueado, vínculos familiares entre outros.

 

 

agora uma duvida só pra confirma uma coisa sobre a aprovação da amizade .

 

deposi de verificar se existe o pedido eu vo faser um select mas dessa vez pra informar pro usuario quem fez o pedido ate ai tudo bem , de pois que eu informei quem fez o pedido a confirmação se daria pela seguinte maneira , se o usuario foi aceito como amigo eu vou adicionar uma ação que vai inserir um registro com os respectivos ids dos dois usuarios na tabela de aprovações caso o usuario recuse eu apago o registro na tabela solicitações e caso usuario já tennha a amizade com o outro usuario eu apago o registro em solicitações e apago registro em aprovações , a logica ta certa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ENTENDI ETÃO QUER DISER A QUE AS APROVAÇÕES FICARIAM EM OUTRA TABELA JUNTO COM OUTRAS INFORMAÇÕES COMO BLOQUEIO E ETC?

 

 

 

 

agora uma duvida só pra confirma uma coisa sobre a aprovação da amizade .

 

deposi de verificar se existe o pedido eu vo faser um select mas dessa vez pra informar pro usuario quem fez o pedido ate ai tudo bem , de pois que eu informei quem fez o pedido a confirmação se daria pela seguinte maneira , se o usuario foi aceito como amigo eu vou adicionar uma ação que vai inserir um registro com os respectivos ids dos dois usuarios na tabela de aprovações caso o usuario recuse eu apago o registro na tabela solicitações e caso usuario já tennha a amizade com o outro usuario eu apago o registro em solicitações e apago registro em aprovações , a logica ta certa?

 

Depende se você quer que, quando a amizade seja desfeita, recusada, etc, quem iniciou o pedido seja notificado.

 

Se eu recuso o pedido, e você remove o pedido do DB, eu fico hábil a receber novamente o pedido da pessoa a quem recusei. Isso cria um ciclo que o requisitante vai insistindo até que eu aceite.

 

O mesmo acontece para a remoção. Se eu remover a amizade e for permitido solicitar novamente, pode haver essa insistência chata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende se você quer que, quando a amizade seja desfeita, recusada, etc, quem iniciou o pedido seja notificado.

 

Se eu recuso o pedido, e você remove o pedido do DB, eu fico hábil a receber novamente o pedido da pessoa a quem recusei. Isso cria um ciclo que o requisitante vai insistindo até que eu aceite.

 

O mesmo acontece para a remoção. Se eu remover a amizade e for permitido solicitar novamente, pode haver essa insistência chata.

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk ta certo então . muito obrigado Evandro Oliveira obrigado mesmo me ajudou d+ d+ d+ tu é fera manow :clap:

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.