Ir para conteúdo

POWERED BY:

Arquivado

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

Vinicius Eduardo_52741

"Feed"

Recommended Posts

Olá amigos, hoje estou com essa problema nas mãos, então vamos direto ao ponto: o usuário posta X conteúdo e grava na db e ai eu vou precisar exibir seu "feed" para seus amigos e para ele mesmo, como faço isso sem estourar minha db gravando o post X para cada usuário?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, mas como expressar isso em PHP? heuehu'

em PHP? heuehu, se expressa assim:

$feed = new ArrayObject();
$friends = $user->getFriends();
$firends->push($user);

foreach ($friends as $friend) {
    foreach ($friend->getPosts() as $post) {
        $feed->push($post);
    }
}

...

 

Mas, essa informação é armazenada em algum lugar, correto? Num banco de dados, num bloquinho de notas do lado da sua mesa, enfim.

 

Este mecanismo de armazenamento deve prover uma funcionalidade de obtenção dos dados.

 

No caso de bancos de dados relacionais, existe a sintaxe JOIN

 

select
  post.*
from
  post
inner join userPosts on
  userPosts.post = post.id
inner join user on
  userPosts.user = user.id
where user.id in (
  select
    IF(friends.from = u.id, friends.to, friends.from) as friend
  from
    friends
  where
    friends.active = TRUE
  and (
      friends.from = ${ID_DO_USUARIO_LOGADO}
    or
      friends.to = ${ID_DO_USUARIO_LOGADO}
  )
)
or
  user.id = ${ID_DO_USUARIO_LOGADO}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso MySQL, serve nele esse código? (desculpe nao ter testado ainda não estou no meu computador)

 

 

Nossa, não sabia que era possivel com MySQL, poderia me explicar um pouco como funciona esse código, para eu poder adaptar, boiei legal aqui.

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius,

Acho besteira usar OO neste caso, prefiro usar o modo abaixo...

Você pode usar o comando SELECT:

 

 

<?

//Abrindo conexão com banco de dados

mysql_conect('servidor', 'login', 'senha');

mysql_select_db ("Nome do seu banco de dados");

$seleciona = mysql_query("SELECT * FROM nomedasuatabela");

while ($ln = mysql_fetch_array($seleciona)) {

$id_noticia = $ln['iddasuanoticia'];

$titulo = $ln['titulo'];

$noticia = $ln['texto_noticia'];

}

?>

 

Entendeu ?

Qualquer coisa avisa!

Abraços, Diogo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Vinicius Eduardo_52741, pelo visto, te falta o básico de programação/entendimento da linguagem.

 

Apresente pra gente o que você já tem pronto para que possamos ter uma ideia do ponto de partida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não qu eu não saiba, só não estou nesse nivel de orientação a objetos, contudo o projeto está pronto apenas preciso que ele exiba o feed de acordo com a dúvida, eu tenho a tabela feed dessa forma:

 

 

 

 

CREATE TABLE IF NOT EXISTS `feed` (
`feed_ID` int(11) NOT NULL AUTO_INCREMENT,
`feed_sect` varchar(50) NOT NULL,
`feed_stats` varchar(2) NOT NULL DEFAULT '0',
`feed_de` text NOT NULL,
`feed_para` text NOT NULL,
`feed_type` int(30) NOT NULL,
`feed_text` text NOT NULL,
`feed_image` text NOT NULL,
`feed_date` varchar(30) NOT NULL,
`feed_likes` varchar(100) NOT NULL DEFAULT '0',
`feed_compartilhar` varchar(100) NOT NULL DEFAULT '0',
`feed_tags` text NOT NULL,
`feed_comments` varchar(100) NOT NULL DEFAULT '0',
PRIMARY KEY (`feed_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;

 

eu estava usando a forma mais "torp" que eu usava o campo feed_para para gerar o feed do usuário logado, e o feed_e pra saber de quem veio o feed, usava assim, mas agora preciso atualizar para facilitar o termino do projeto, quanto opções, como curtir e compartilhar e também para não sobrecarregar o MySQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não qu eu não saiba, só não estou nesse nivel de orientação a objetos,

Apenas apresentei duas das incontáveis formas de se fazer

contudo o projeto está pronto apenas preciso que ele exiba o feed de acordo com a dúvida, eu tenho a tabela feed dessa forma:

Insuficiente. Você precisa encontrar a forma de relacionar o dono do feed com quem pode visualizá-lo.

 

Você deve(ria) ter uma tabela que relaciona o ID do feed com o ID do usuário e outra tabela que relaciona os amigos, correto?? Tem como postar aqui??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas a tabelas dos amigos:

 

 

CREATE TABLE IF NOT EXISTS `friends` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`amigo_original` text NOT NULL,
`amigo_do_original` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu sei quem é o dono do feed??

 

Seu BD não tem chaves estrangeiras, estude sobre este relacionamento, vai ajudar pra caramba na performance.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Feed_para é um campo de tipo texto. O que vai ali? O nome da pessoa?

 

Já parou pra pensar que podem existir pessoas com o mesmo nome??

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao la vai o ID do usuário que está registrado na tabela users

Então porque ele é do tipo texto??

 

 

  `feed_de` text NOT NULL,
  `feed_para` text NOT NULL,

 

 

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.