gpt4 book ai didi

php - 使用 if 语句显示表中的记录

转载 作者:行者123 更新时间:2023-11-30 23:07:50 25 4
gpt4 key购买 nike

我现在正在为我的类(class)项目创建一个博客。在此之前,我询问过限制显示的字符,有人帮助了我。现在我有 3 种不同类型的帖子;文章、问答和视频,但我把它们放在同一个表中。我想按类别显示它并有分页,我已经做到了。在 Category.php 中,我想按类别显示帖子并按日期 desc 顺序对其进行排序,如果用户单击“阅读更多”链接,它将把他们重定向到一个包含完整文章的新页面。例如,如果用户单击 Q&A 的“阅读更多”链接,它将重定向到 qna-single.php,如果用户单击视频的“阅读更多”链接,它将重定向到 video-single.php。

现在我正在使用 IF 语句来获得该结果。这是我的 PHP

$id=$_GET['id'];
$query1 = "SELECT articles.*, categories.category_name FROM articles, categories WHERE articles.article_category_id=categories.category_id AND categories.category_id='$id' and articles.article_type_id='1' ORDER BY article_id DESC LIMIT $start, $limit";
$result1 = mysql_query($query1);

$query2 = "SELECT articles.*, categories.category_name FROM articles, categories WHERE articles.article_category_id=categories.category_id AND categories.category_id='$id' AND articles.article_type_id='2' ORDER BY article_id DESC LIMIT $start, $limit";
$result2 = mysql_query($query2);

$query3 = "SELECT articles.*, categories.category_name FROM articles, categories WHERE articles.article_category_id=categories.category_id AND categories.category_id='$id' AND articles.article_type_id='3' ORDER BY article_id DESC LIMIT $start, $limit";
$result3 = mysql_query($query3);

这是我如何显示结果

if ($query1) { //display articles
while ($query_row1 = mysql_fetch_assoc($result1))
{
$string1 = strip_tags($query_row1['article_content']);
if (strlen($string1) > 500) {
$stringCut1 = substr($string1, 0, 500);
$string1 = substr($stringCut1, 0, strrpos($stringCut1, ' '))."... <a href='article-single.php?id=".$query_row1['article_id']."' title='view details' class='more'>Read More</a>";
}

echo "<li>
<div>
<h4><a href='article-single.php?id=".$query_row1['article_id']."' title='view details'>".$query_row1['article_title']."</a></h4>
<span>
Posted in <a href = '#'>".$query_row1['category_name']."</a> by <a href=''>dr.nor</a> on <a href='#'>".$query_row1['article_date']."</a>
</span>
</div>
<p>".$string1."</p>
</li>";
}
}
if ($query2) { //display q&a
while ($query_row2 = mysql_fetch_assoc($result2))
{
$string2 = strip_tags($query_row2['article_content']);
if (strlen($string2) > 500) {
$stringCut2 = substr($string2, 0, 500);
$string2 = substr($stringCut2, 0, strrpos($stringCut2, ' '))."... <a href='qna-single.php?id=".$query_row2['article_id']."' title='view details' class='more'>Read More</a>";
}

echo "<li>
<div>
<h4><a href='qna-single.php?id=".$query_row2['article_id']."' title='view details'>".$query_row2['article_title']."</a></h4>
<span>
Posted in <a href = '#'>".$query_row2['category_name']."</a> by <a href=''>dr.nor</a> on <a href='#'>".$query_row2['article_date']."</a>
</span>
</div>
<p>".$string2."</p>
</li>";
}
}
if ($query3) { //display video
while($query_row3=mysql_fetch_assoc($result3)){

$string3 = strip_tags($query_row3['article_content']);
if (strlen($string3) > 200) {
$stringCut3 = substr($string3, 0, 200);
$string3 = substr($stringCut3, 0, strrpos($stringCut3, ' '))."... <a href='video-single.php?id=".$query_row3['article_content']."' title='view details' class='more'>Read More</a>";
}

$str = "<iframe id=\"player\" type=\"text/html\" width=\"700\" height=\"435\" src=\"http://www.youtube.com/embed/".$query_row3['article_video_link']."\" frameborder=\"0\" allowfullscreen></iframe>";
echo "
<li>
<span></span>
<div>
<h4><a href='video-single.php?id=".$query_row3['article_id']."' title='view details'>".$query_row3['article_title']."</a></h4>
<span>
Posted in <a href = '#'>".$query_row3['category_name']."</a> by <a href=''>dr.nor</a> on <a href='#'>".$query_row3['article_date']."</a>
</span>
</div>
<p>";
echo stripslashes($str);
echo "</p>
<div class='h5'></div>
<p>".$string3."</p>
</li>";
}
}

问题是,无论文章优先、视频优先还是问答优先,我都想按日期显示,但它按帖子类型(文章、问答、视频)显示。我的意思是,在 Article 的循环结束后(按日期 desc 排序),它将继续进行问答等。那么,我该如何解决呢? *抱歉我的英语不好,:)

最佳答案

不要使用三个查询。一次查询即可得到准确的结果。

试试这个:

SELECT a.*, c.category_name
FROM articles a
INNER JOIN categories c ON a.article_category_id = c.category_id
WHERE c.category_id = '$id' AND a.article_type_id IN (1, 2, 3)
ORDER BY a.article_id DESC
LIMIT $START, $LIMIT

关于php - 使用 if 语句显示表中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21088184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com