使用php和sql与朋友共享笔记
我想分享只有我的朋友才能看到的笔记。我有一个名为Friends的表,其中包含用户的id 我尝试在朋友之间分享笔记,我可以分享笔记,但每次我查看笔记时,我都会看到两张,因为我有两个朋友使用php和sql与朋友共享笔记,php,mysql,sql,Php,Mysql,Sql,我想分享只有我的朋友才能看到的笔记。我有一个名为Friends的表,其中包含用户的id 我尝试在朋友之间分享笔记,我可以分享笔记,但每次我查看笔记时,我都会看到两张,因为我有两个朋友 if ($friend_query = mysql_query("SELECT * FROM `friends` WHERE `user_one`='$my_id2' OR `user_two`='$my_id2'")) { while ($fetch_friends = mysql_fetch_ass
if ($friend_query = mysql_query("SELECT * FROM `friends` WHERE `user_one`='$my_id2' OR `user_two`='$my_id2'")) {
while ($fetch_friends = mysql_fetch_assoc($friend_query)) {
$user_one = $fetch_friends['user_one'];
$user_two = $fetch_friends['user_two'];
/*QUERY FOR SHARE */
$displaying_shared_query = mysql_query(" SELECT * FROM `share` WHERE `shared_user_ID` ='$user_one' OR `shared_user_ID` ='$user_two' ");
while ($fetch_shared_display = mysql_fetch_assoc($displaying_shared_query)) {
$shared_id2 = $fetch_shared_display['id']; //PRIMARY ID FOR SHARING
$shared_note2 = $fetch_shared_display['shared_note'];
$shared_username2 = $fetch_shared_display['shared_username']; /*UserName of user who is sharing notes*/
$shared_user_ID2 = $fetch_shared_display['shared_user_ID']; /*ID of user who is sharing notes */
$shared_Time2 = $fetch_shared_display['time_shared'];
$del_share = " <a id='closebtn' href='delete_shared_note.php?note=$shared_id2'><span id='del_share_pix'>Delete</span></a>";
$from_pic = '<img id="post_dp" src="/user/'.$shared_username2.
'/display_pic.jpg">';
//2 //2
if ($my_id2 == $shared_user_ID2) /*if the shared note is mine than display Delete Option Or ELse Dont */ {
echo "<span ><a id='username_text' href='profile.php?user=$shared_user_ID2'>$shared_username2</a></span><br>";
echo "<a id='post_userName'>$from_pic<br>";
echo "$shared_Time2 <br>";
echo "<div class='divbutton' id='share_border'>$shared_note2 $del_share </div><br>";
} else if ($my_id2 != $shared_user_ID2) {
echo "<span ><a id='username_text' href='profile.php?user=$shared_user_ID2'>$shared_username2 </a></span><br>";
echo "<a id='post_userName'>$from_pic<br>";
echo "$shared_Time2 <br>";
echo "<div class='divbutton' id='share_border'>$shared_note2 </div><br>";
}
}
}
}
输出
这个数据模型不是最优的,但是我认为你可以跳过你与我们共享的整个外部循环,切中要害。编写一个SQL查询,根据您的好友查找与您共享的所有内容。无论如何,最好不要在循环中执行SQL查询,因为这样会使数据库命中率成倍增加
SELECT * FROM `share`
WHERE `shared_user_ID` = '$my_id2'
OR `shared_user_ID`
IN ( SELECT `user_one` FROM `friends` WHERE `user_two` = '$my_id2')
OR `shared_user_ID`
IN ( SELECT `user_two` FROM `friends` WHERE `user_one` = '$my_id2')
如果这个查询不适合您,请告诉我,我可以安装mysql并尝试复制您的数据模型以验证它。此外,请更好地定位您的位置。否则你会得到越来越多的倍数。如果您需要更多帮助,请尝试一下或告诉我:。很抱歉,我不明白您的答案,我的意思是我应该如何布局我的代码,如果您可能更清楚,请告诉我。谢谢用户的朋友越多,这就是共享笔记的时间