Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá boa tarde!!
Estou engajado no desenvolvimento de uma rede social com php e mysql, para isso decidi usar o Framework codeigniter para facilitar um pouco o processo.
Porem me deparei com um código que estou ficando de cabelo em pé, para tem uma rede social temos que realizar a logica de amizade onde um usuário manda a notificação e o outro aceita tornando assim os dois amigos na rede.
Até ai já esta feito, um usuários consegue mandar notificação para o outro, recusar também foi fácil simplesmente eu crio um registro no banco com a notificação de amizade, se recusa só deleta a linha enta a solicitação some e pronto, mas quando o usuários aceitar pensei em fazer assim,
Criei uma tabela Amizades,
nesta tabela vou ter o código do usuário e o código dos seus amigos, então tive a brilhante ideia basta colocar o código dos amigos dentro de um array, e pronto porem adicionar uma pessoa blz, mas quando tem de adicionar outra ou ele substitui ou eu tenho que buscar no banco abrir este dado e carregar em uma array os códigos do novo amigo, assim continuo com as amizades antigas e ainda tenho a nova amizade no final do array.
Mas como fasso isso com php como pego esse array abro e coloco dentro de um único index o valor, ate agora já fis este código mais não funciona.
TEM UMAS PARTES COMENTADAS POIS ESTOU A TARDE TODA A TODO CUSTO TENTANDO FAZER FUNCIONAR OBS ESTE É O CONTROLLER
public function aceitar($id_notificando){
$this->load->model("Usuarios_model");
$dados = array("amigos"=>$this->Usuarios_model->BuscaAmigosAtuais($this->GetId()));
$amigos = $dados['amigos'];
$amigos = unserialize($amigos['amigos']);
//$amigos['amigos'] = array_push($amigos, $id_notificando);
//$amigos['amigos'] = array($amigos['amigos'], $id_notificando);
$dadosUpdate = array(
"nome_id"=>$amigos['nome_id'],
"amigos"=>$amigos['amigos'],
);
var_dump($amigos);
//$this->Usuarios_model->AceitaAmizade($dadosUpdate);
//redirect("/Inicio/home");
}
AGORA O MODEL COM AS FUNÇÕES CHAMADAS NESTE TRECHO
public function BuscaAmigosAtuais($id){
$this->db->where("nome_id", $id);
return $this->db->get("amizades")->row_array();
}
public function AceitaAmizade($listaAmigos){
$this->db->update("amizades", $listaAmigos);
}
Se alguém conseguir entender bem minha logica da uma mão ai, como fasso na real este e só uma parte do problema mas já vai ajudar bastante.
Então Agradeço pela ajuda,
Realmente minha logica ficou meio complicada
mas o importante e que consegui resolver
eu estava viajando, bastou usar um explode e implode no array kk
Sei que não é a melhor opção vai consumir muitos recuso bla bla bla, mas tenho pressa derepente mais para frente fasso uma atualização no sistema e modifico esta parte!!
Pode ser que consuma ou pode ser que não, mas procure sempre simplificar e deixar o mais limpo possível, tanto código quanto o teu DB, uma rede social depende muito do sistema de amizades e praticamente tudo está ligado a ele então se vc não tratar agora pode ter dar uma dor de cabeça enorme lá na frente, procure pensar de forma ampla e em todas as funções que vão depender desta tabela e desse código pq pode ter certeza que você vai fazer muitas consultas a essa tabela, principalmente de comparações.
Abraço mano !! :D
Mano, não sou lá fã de frames mas acredito que usando ou não a lógica é a mesma, se eu entendi direito vc tá complicando as coisas, siga o básico que dá certo, crie uma só tabela que irá registrar as amizades e seus status.
Nesta tabela você devera ter um campo pra registrar quem enviou a solicitação, um pra registrar quem recebeu e u. Pra registrar o status e se quiser uma pra registra a data.
Agora vamos a lógica
Normarlmente em sistemas de amizade nós temos três status registráveis e um não:
Registráveis:
Não registraveis:
Solicitação recusada = exclui o registro que está com status pendente 0.
Bom agora que temos as tabelas e os status que vão ser registrados é só começar organizar as ações da forma que vc quer,