Show updates from a table, (facebook wall) - php

Posted on 2010-09-11
Last Modified: 2013-12-12
This for something like facebook wall, our updates and friends updates. Right now I have a table to keep updates and another table  to keep friends information for a specific user(user_id and his/her 's friends ids). There is a user table and a page for each user; when someone visit the page, we check for the users friends and show updates from the update table of the user and users friends. What should I do to get something like this?. I dont want the coding, just a method or a way to do it.


P.S:- Using php and mysql
Question by:sahanz
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +1

Expert Comment

ID: 33657336
We probably need more information. I assume you are using PHP/mySQL, since you posted in this section.
How are you storing the friends relationship? What data is held in the "Friend's Information table?
What are you trying to update.
How is that update stored on the "Updates Table"? Is there a line per change with a datestamp and username? How are the changes noted? Is the Update Table" data ever moved to the User Table?

Author Comment

ID: 33680737

Let me explain in other way, I have a user_table which contains users information such as username email address etc, and each of the user has an ID, Another table contains relationship between the users of the table, lets say the table is "friends", in front end these relations are working like this, users can become friends, so we're keeping the relationships between friends in "friends" table. Another table called "updates" has status updates(like in twitter) for each user, so the updates table has a ID for each update, text column for the update text, and user_id column coz we need to know who did this update.

For the users in "user_table" we have a profile page, we list the users details and his/her updates. Along with users updates we need to list his/her friends updates, lets say users who has the ID 1  and 2 are friends, and both of these users have status updates in "updates" table. Lets say someone visit the profile page which is for user ID-2 we grab the updates from "UPDATES" according to the user's id and show them in the page, but like I said I need to show the updates of this user, in this case updates of user ID - 2. But how to do that?

Accepted Solution

Snarfles earned 500 total points
ID: 33847089
You will need to perform 2 queries I think. First from the profile page, select all friend id's from the friends table where friend is the userid of the current person.


SELECT friend_id_2 FROM friends WHERE friend_id_1 = '123';

Assuming that your friends table has 2 sets of user id's for the relationship.

Next build a comma deliminated list from the above so that you end up with something like this

$friend_list = "2,56,67,89,90";

Eg the current person's profile is friends with the id's 2,56,67,89,90. You will also want to tack on the user id of the current person


$friend_list = $friend_list.",".user_id;

Next use that list in a new query from your updates table

SELECT * FROM updates WHERE user_id IN ($friend_list);

This should get you a query of all of the updates of the current user as well as the updates of all of his/her friends.

Make sense?
Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

LVL 110

Expert Comment

by:Ray Paseur
ID: 33855843
You might be able to use Snarfles suggestion in a single query.  Something like this...

SELECT * FROM updates WHERE user_id IN (SELECT friend_id_2 FROM friends WHERE friend_id_1 = '123');

Expert Comment

ID: 33856180
It would need the current users id in the list as well Ray, so assuming your select works then it would need to be something like

SELECT * FROM updates WHERE user_id IN (SELECT DISTINCT friend_id_2 FROM friends WHERE friend_id_1 = '123' AND friend_id_2 = $user_id);

So adding to the query is an additional condition "AND friend_id_2 = $user_id" to get the current user's id in the query and then also "DISTINCT" will tell it to only return unique rows so that you dont get 100 versions of the current user_id in the list.
LVL 110

Expert Comment

by:Ray Paseur
ID: 33858951
Yeah, good point.  I tend to test these things one-line-at-a-time when it's my own work.  DISTINCT and GROUP BY or something like that usually percolates up.  But I'm not sure whether it would matter if you had multiples in the second-tier select.  I'm sure it would not hurt to have a distinct list, but wouldn't the non-distinct query look somewhat like this:

SELECT x FROM updates WHERE user_id IN (101,101,101,123,123,456)

I've never observed the behavior, but MySQL might be smart enough to do something like array_unique() with that list.  Would be an interesting thing to test.

Author Comment

ID: 33976653
Hi, First one works well, and second one works well without the current users id, as soon as I put "AND" and user it it returns empty results.

Author Closing Comment

ID: 34000288
Hi, First one works well, and second one works well without the current users id, as soon as I put "AND" and user it it returns empty results.

Featured Post

Will your db performance match your db growth?

In Percona’s white paper “Performance at Scale: Keeping Your Database on Its Toes,” we take a high-level approach to what you need to think about when planning for database scalability.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Recently, Microsoft released a best-practice guide for securing Active Directory. It's a whopping 300+ pages long. Those of us tasked with securing our company’s databases and systems would, ideally, have time to devote to learning the ins and outs…
Your data is at risk. Probably more today that at any other time in history. There are simply more people with more access to the Web with bad intentions.
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

630 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question