Я создаю настенную систему, в которой вы можете публиковать обновления на странице индекса, и я хотел, чтобы сообщения могли видеть только друзья пользователя, я почти заставил свой код работать, но у меня все еще есть проблема, но прежде чем я упомяну свою проблему если есть лучший способ сделать это, пожалуйста, поделитесь им со мной, я покажу вам мой код
Сначала у меня есть две таблицы для кода
‘my_friends’: ‘id’, ‘username’, ‘friend’
‘statues’: ‘p_id’, ‘post’, ‘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 FROMWHERE
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 это не так, пожалуйста, помогите
Вот некоторые мысли, которые, возможно, могут помочь вам
mysql_*
функции, которые они устарели использовать PDO
класс вместоstatues
$result[] =
) SELECT p_id, post, f_name, UNIX_TIMESTAMP() - date_created AS TimeSpent FROM statues WHERE f_name IN '.implode(',', $firends_name)
,ваш код должен выглядеть примерно так:
$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. Потому что сейчас он очень уязвим для инъекций.
Других решений пока нет …