2014-12-24 2 views
-3

Я создаю систему стен, где вы можете публиковать обновления на странице индекса, и мне хотелось, чтобы сообщения отображались только друзьями пользователя, я почти сделал мой код, но я до сих пор есть проблемы, но прежде, чем я уже моя проблема, если есть лучший способ сделать это, пожалуйста, поделитесь со мной, я покажу вам мой коднастенные обновления видны только друзьями

первый у меня есть две таблицы для кода

«my_friends ': 'идентификатор',' имя пользователя», 'друг'

'статуи': 'P_ID', 'после', 'f_name', 'userip', 'DATE_CREATED'

этот код в Post.php, то он будет включен в главную страницу

//Check for user's friends 
    $check = mysql_query("select * from `my_friends` where `username` = '".$username."' order by `id` desc "); 


     //Get users friends 
     while($get_users_friends = mysql_fetch_array($check)) 
     { 


      $show_more_button = 1; 
      $result = mysql_query("SELECT *, 
      UNIX_TIMESTAMP() - date_created AS TimeSpent FROM `statues` WHERE `f_name` = '".mysql_real_escape_string(strip_tags($get_users_friends["friend"]))."' "); 
     } 

     while($row = mysql_fetch_array($result)) 
{ 


    $comments = mysql_query("SELECT *, 
    UNIX_TIMESTAMP() - date_created AS CommentTimeSpent FROM comments where post_id = ".$row['p_id']." order by c_id asc");  ?> 
    <div class="friends_area" id="record-<?php echo $row['p_id']?>"> 


     <label style="float:left" class="name"> 

     <b><?php echo $row['f_name']; ?></b><br> 
     <span> 

     </span><br> 

     <em><?php echo $row['post'];?></em> 
     <br clear="all" /> 

код не работает правильно, это показывают пост-канал только к одному другу, первый добавленный друг пользователя другими словами, SQL $result = mysql_query("SELECT *, UNIX_TIMESTAMP() - date_created AS TimeSpent FROM статуи WHERE f_name = '".mysql_real_escape_string(strip_tags($get_users_friends["friend"]))."' "); выбрать все статуи только одного друга, когда я пишу echo mysql_real_escape_string(strip_tags($get_users_friends["friend"])),'<br>'; до SQL это показывает все друзья, но когда я использую его в SQL это не так, пожалуйста, помогите

ответ

0

Вот некоторые мысли, которые могут вам помочь

  1. Dont использовать mysql_* функции они устаревшее Используйте PDO класс вместо
  2. Dont запрос для * если вам не нужна вся информации из таблицы
  3. имени
  4. Таблицы является statues
  5. После завершения первого в то время как ваш переменного $ результат будет содержать только последний запрос данных друга, потому что он переписывается на следующем этапе итерации (используйте $result[] =)
  6. Совокупная информация от $ get_users_friends, чтобы переписать запрос на SELECT p_id, post, f_name, UNIX_TIMESTAMP() - date_created AS TimeSpent FROM statues WHERE f_name IN '.implode(',', $firends_name).
  7. Не видите, если вы используете переменную $ comments вообще
  8. $ show_more_button = 1; не см., если он используется вообще. и из-за этого он переписывается на следующем шаге итерации;

ваш код должен выглядеть примерно так:

$check = mysql_query("select friend from `my_friends` where `username` = '".$username."' order by `id` desc "); 

while($get_users_friends = mysql_fetch_array($check, MYSQL_ASSOC)) 
{   
    $result[] = $get_users_friends['friend']; 
} 
$friends_data_query = mysql_query("SELECT p_id, f_name, post,UNIX_TIMESTAMP() - date_created AS TimeSpent FROM `statues` WHERE `f_name` IN'".implode(',',$result)."'"); 
while($friends_data = mysql_fetch_array($friends_data_query,MYSQL_ASSOC)){ 

Но убедитесь, что он переписывается в PDO. Потому что сейчас очень вульгарно для инъекций.

+0

благодарит за ответ, но не работает. –

+0

OP задает вопрос о конфиденциальности и задал такой заголовок вопросу о том, что он отображается в верхней части результатов поиска, но он не дает никаких подробностей даже в вашем ответе о том, что на самом деле является вопросом. –

Смежные вопросы