Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php和sql与朋友共享笔记_Php_Mysql_Sql - Fatal编程技术网

使用php和sql与朋友共享笔记

使用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

我想分享只有我的朋友才能看到的笔记。我有一个名为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_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并尝试复制您的数据模型以验证它。

此外,请更好地定位您的位置。否则你会得到越来越多的倍数。如果您需要更多帮助,请尝试一下或告诉我:。

很抱歉,我不明白您的答案,我的意思是我应该如何布局我的代码,如果您可能更清楚,请告诉我。谢谢用户的朋友越多,这就是共享笔记的时间