首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wall脚本问题

Wall脚本问题
EN

Stack Overflow用户
提问于 2013-07-31 05:23:57
回答 1查看 244关注 0票数 0

我的墙脚本有一个问题,一个帖子在用户自己的墙上显示了多次,在他的朋友墙上显示了一次。例如,如果我有5个朋友,脚本将显示5次单个帖子。

由于它只在朋友墙上显示了一次,这一部分运行良好,但问题在用户自己的墙上。

PHP代码:

代码语言:javascript
复制
$qfu = "SELECT * FROM my_friends WHERE (user_id = '$user_id' OR friend_id = '$user_id') AND status = '1'";
$fu = mysql_query($qfu) or die(mysql_error());
$rowfu = mysql_num_rows($fu);
while ($rowf = mysql_fetch_array($fu)) {
    $user_id   = $rowf['user_id'];
    $friend_id = $rowf['friend_id'];
    $querymsgs = "SELECT * FROM messages where uid_fk = '$friend_id' OR uid_fk = '$user_id' order by msg_id DESC Limit 1";
    $qmsgs = mysql_query($querymsgs) or die(mysql_error());
    $row_msgs = mysql_num_rows($qmsgs);
    while ($msgs = mysql_fetch_array($qmsgs)) {
        $msg_id     = $msgs['msg_id'];
        $orimessage = $msgs['message'];
        $message    = tolink(htmlentities($msgs['message']));
        $time       = $msgs['created'];
        $privacy    = $msgs['privacy'];
        if ($privacy == '0') {
            $privacy = 'Only Me';
        } elseif ($privacy == '2') {
            $privacy = 'Public';
        } else {
            $privacy = 'Friends';
        }
        $uid           = $msgs['uid_fk'];
        $fullname      = $msgs['fname'] . " " . $msgs['lname'];
        $face          = $Wall->Avatar($uid);
        $commentsarray = $Wall->Comments($msg_id);
?>  

我也尝试过下面的代码,但它也多次显示相同的帖子:

代码语言:javascript
复制
$qfu = "SELECT * FROM my_friends WHERE (user_id = '$user_id' OR friend_id = '$user_id') AND status = '1'";
$fu = mysql_query($qfu) or die(mysql_error());
$rowfu = mysql_num_rows($fu);
while ($rowf = mysql_fetch_array($fu)) {
    if ($user_id == $rowf['user_id']) {
        $fid = $rowf['friend_id'];
    } else {
        $fid = $rowf['user_id'];
    }
    $querymsgs = "SELECT * FROM messages M, tbluser U WHERE U.id='$user_id' and M.uid_fk=U.id and (M.privacy='1' or M.privacy='2') order by M.msg_id desc ";
    $qmsgs = mysql_query($querymsgs) or die(mysql_error());
    $row_msgs = mysql_num_rows($qmsgs);
    $msgs = mysql_fetch_array($qmsgs);
    $msg_id = $msgs['msg_id'];
    $orimessage = $msgs['message'];
    $message = tolink(htmlentities($msgs['message']));
    $time = $msgs['created'];
    $privacy = $msgs['privacy'];
    if ($privacy == '0') {
        $privacy = 'Only Me';
    } elseif ($privacy == '2') {
        $privacy = 'Public';
    } else {
        $privacy = 'Friends';
    }
    $uid = $msgs['uid_fk'];
    $fullname = $msgs['fname'] . " " . $msgs['lname'];
    $face = $Wall->Avatar($uid);
    $commentsarray = $Wall->Comments($msg_id);
?>

请帮我摆脱这个问题。

EN

回答 1

Stack Overflow用户

发布于 2013-08-01 04:15:35

我认为问题出在这句话中:$qfu = "SELECT * FROM my_friends WHERE (user_id = '$user_id' OR friend_id = '$user_id') AND status = '1'"; -如果你有5个朋友,你的id将在结果中出现5次,从而得到这个帖子5次。

您应该去掉查询的user_id = '$user_id'部分:

$qfu = "SELECT * FROM my_friends WHERE friend_id = '$user_id' AND status = '1'"; -这样你就只能得到你的朋友了。您已经有了自己的id,所以不需要查询它。

现在,您需要将获取消息的代码放入单独的函数中,您已经准备好了:

代码语言:javascript
复制
function getMessagesById($authorId) {
    $querymsgs = "SELECT * FROM messages where uid_fk = '$authorId' order by msg_id DESC";
    $qmsgs = mysql_query($querymsgs) or die(mysql_error());
    $row_msgs = mysql_num_rows($qmsgs);
    while ($msgs = mysql_fetch_array($qmsgs)) {
        $msg_id     = $msgs['msg_id'];
        $orimessage = $msgs['message'];
        $message    = tolink(htmlentities($msgs['message']));
        $time       = $msgs['created'];
        $privacy    = $msgs['privacy'];
        if ($privacy == '0') {
            $privacy = 'Only Me';
        } elseif ($privacy == '2') {
            $privacy = 'Public';
        } else {
            $privacy = 'Friends';
        }
        $uid           = $msgs['uid_fk'];
        $fullname      = $msgs['fname'] . " " . $msgs['lname'];
        $face          = $Wall->Avatar($uid);
        $commentsarray = $Wall->Comments($msg_id);
}

//get all own messages
getMessagesById($userId);

//get all friends' messages
$qfu = "SELECT * FROM my_friends WHERE friend_id = '$user_id' AND status = '1'";
$fu = mysql_query($qfu) or die(mysql_error());
$rowfu = mysql_num_rows($fu);
while ($rowf = mysql_fetch_array($fu)) {
    $friend_id = $rowf['friend_id'];
    getMessagesById($friend_id);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17957669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档