我想显示自己的帖子(默认情况下),但如果显示Status = '1'
我只有这个代码,它显示所有带有相关图像和内容的帖子,因为我不知道如何创建我要寻找的代码。
帖子:
| commentid | comment | imagesid | author |
---------------------------------------------
| 1 | fool | 5557 | test |
| 2 | fool2 | 5585 | devel |
---------------------------------------------
多张图片:
| id | image | imagesid | author |
------------------------------------
| 1 | name1 | 5557 | test |
| 2 | name2 | 5557 | test |
| 3 | name3 | 5585 | devel |
------------------------------------
连接:
| id | Friend | FriendReferee | Status |
-----------------------------------------
| 1 | test | devel | 1 |
-----------------------------------------
获取图像的实际代码:
$sql = "SELECT * FROM multiple_image";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$imgs[$row['imagesid]][$row['id']]= "<img width='' src='../images/".$row['name']."' >"; // array of image id's, with arrays of images inside them.
}
}
获取相关文本
$sql = "SELECT * FROM posts";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$commentsToImages[$row['commentid']] = $row['imagesid'];
$comments[$row['commentid']] = $row['comment'];
}
}
以分度的div显示结果
foreach($commentsToImages as $commentID =>$imagesID) {
?>
<div class='main'>
<div class='comments'>
<?php echo $comments[$commentID];?>
</div>
<div class='pics'>
<?php
foreach($imgs[$imagesID] as $img) {
echo $img;
}
?>
</div>
</div>
<?php
}
?>
我尝试使用JOIN和if else语句来执行此操作,但是并没有按照我的期望进行。
答案 0 :(得分:1)
在表user_id
,users
和posts
上应该有一个connections
。此外,friend_id
引用了user_id
表的users
。
然后您JOIN
posts
上的表users
和user_id
。通过按ID查找用户名来检索作者。
SELECT
`p`.`post_id`,
`p`.`content` `Post Content`,
`u`.`user_name` `Author`
FROM
`posts` `p`
INNER JOIN
`users` `u` USING(`user_id`)
WHERE
`p`.`user_id` = 1
;
现在,您可以LEFT JOIN
connections
表来自您要查看其帖子的朋友的位置。您想过滤所有具有特定posts
的{{1}}或联接的user_id
表具有特定connection
的信息,例如friend_id
:
1
此示例使用的数据库结构为:
SELECT
`p`.`post_id`,
`p`.`content` `Post Content`,
`u`.`user_name` `Author`
FROM
`posts` `p`
INNER JOIN
`users` `u` USING(`user_id`)
LEFT JOIN
`connections` `c` ON(`c`.`show_posts` AND `p`.`user_id` = `c`.`friend_id`)
WHERE
1 in (`p`.`user_id`, `c`.`user_id`)
ORDER BY `p`.`post_id`
;