0

これにはおそらく非常に基本的なものが必要になるでしょうが、私が望む方法でこれを行うための答えが見つかりません。私が持っているのは、記事の mysql テーブルと、記事が気に入った場合に情報が記録されるお気に入りのテーブルです。そのため、あるテーブルから好きな記事をすべて選択し、別のテーブルからすべての記事を選択して、それらすべてをフィードとして表示する必要があります。私が助けを必要としているのは、投稿のいずれかが気に入った場合は、いいねボタンを表示しないということです (または、まだ気に入っていない場合は、ボタンを表示します)。誰でもこれで正しい方向に私を向けることができますか? ここに私が持っているコードがありますが、最後に気に入ったものだけが表示されます:

<?php
$check_like_sql = "SELECT * FROM posts WHERE type = 'Like' && poster = '$yourid'";
$check_like_res = mysqli_query($con, $check_like_sql) or die (mysqli_error());
if(mysqli_affected_rows($con)>0){
    while($likes = mysqli_fetch_array($check_like_res)){
        $yourlike = $likes['media'];
    }
}
?>
<?php
$get_posts_sql = "SELECT posts.*, members.username, members.avatar, fans.connection FROM posts LEFT JOIN members ON members.id = posts.poster LEFT JOIN fans ON fans.fan = '$yourid' WHERE posts.poster = fans.connection ORDER BY date DESC";
$get_posts_res = mysqli_query($con, $get_posts_sql) or die (mysqli_error());
if(mysqli_affected_rows($con)>0){
    while($posts = mysqli_fetch_assoc($get_posts_res)){
        $postid = $posts['id'];
        etc
        etc


        if($yourlike == $postid){
            $likethis = "<a href=\"php/unlike.php?poster=$yourid&post=$postid\">Unlike</a> . ";
        }
        else if($posttype == "Like"){
            $likethis = "";
        }
        else{
            $likethis = "<a href=\"php/like.php?poster=$yourid&lat=$yourlat&lon=$yourlon&like=$postid&user=$postusername\">Like</a> . ";
        }

        $post .= "";
    }
}
?>
4

1 に答える 1

1

記事テーブルから like_articles テーブルへの外部結合を残すことができます。

select a.*, 
       case when la.liked_article_id is null then 'Not Liked Yet' else 'Already Liked' as LikedStatus 
from   articles a
left outer join liked_articles la
on     a.id = la.article_id
and    @userId = la.user_id;

これは MYSQL では構文的に正しくないかもしれませんが、要点は理解できます。

于 2013-06-24T18:32:18.340 に答える