Php 如果是pagename,则运行station
我正在建立一个博客,有两个表,一个是文章,一个是类别,我正在加入这些表,但我想做的是,如果我点击一个类别链接,只显示类别。我在链接中传递了categories\u id,但是如果页面链接像blog.php?=category\u id,我不知道如何显示categories\u id。我将在URL中显示categories\u id号,我不知道如何显示该类别,我知道SQL语句只显示类别,但我不知道如果URL包含?=category\u id,如何运行该语句,而不是运行按日期显示所有文章的原始SQL语句。我尝试根据页面名称执行if和else条件,但不起作用Php 如果是pagename,则运行station,php,mysql,sql,if-statement,mysqli,Php,Mysql,Sql,If Statement,Mysqli,我正在建立一个博客,有两个表,一个是文章,一个是类别,我正在加入这些表,但我想做的是,如果我点击一个类别链接,只显示类别。我在链接中传递了categories\u id,但是如果页面链接像blog.php?=category\u id,我不知道如何显示categories\u id。我将在URL中显示categories\u id号,我不知道如何显示该类别,我知道SQL语句只显示类别,但我不知道如果URL包含?=category\u id,如何运行该语句,而不是运行按日期显示所有文章的原始SQL
<?php
connect_to_db();
$url = $_SERVER['SCRIPT_NAME'];
$pos = strrpos($url,"/");
$pagename = substr($url,$pos+1);
if($pagename == ("blog.php")) {
$sql = "SELECT article_id, title, body, date, categories.category, author FROM articles
LEFT JOIN categories ON articles.category = categories.category_id ORDER BY article_id DESC LIMIT 4";
}
elseif($pagename == ("blog.php?=1")) {
$sql = "SELECT article_id, title, body, date, categories.category, author FROM articles
LEFT JOIN categories ON articles.category = categories.category_id WHERE category_id = 1";
}
$result = query($sql);
if($result===false) {
echo "query failed";
}
else {
while( $data = mysqli_fetch_array($result))
{
?>
<article>
<h3 class="title-medium"><?php echo $data['title']; ?></h3>
<p class="caption-medium"><?php echo $data['author']; ?> <?php echo $data['date']; ?> <?php echo $data['category']; ?></p>
<img src="img/blog-post-1.jpg" alt="">
<p><?php echo substr($data['body'],0,450)." ..." ?></p>
<a href="blog-post.php?id=<?php echo $data['article_id']; ?>"><p class="caption-medium highlight">Read More</p></a>
<hr>
</article>
<?php
}
}
?>
在查询字符串中使用cat\u id
,如:
blog.php?cart_id=1
您可以从$\u GET[]
或$\u REQUEST[]
if (isset($_GET['cat_id']))
$category_id = intval($_GET['cat_id']);
else
$category_id = 0;
if($category_id > 0) { //Non-Zero +ve value
$sql = "SELECT article_id, title, body, date, categories.category, author
FROM articles LEFT JOIN categories ON articles.category = categories.category_id
WHERE category_id = $category_id";
} else { //Zero
$sql = "SELECT article_id, title, body, date, categories.category, author
FROM articles LEFT JOIN categories ON articles.category = categories.category_id
ORDER BY article_id DESC LIMIT 4";
}
正如在评论中所告诉您的,您必须只使用参数,而不是整个请求
connect_to_db();
$where = '';
if (isset($_GET['cat_id'])) {
$where = "WHERE category_id = ".intval($_GET['cat_id']);
}
$sql = "SELECT article_id, title, body, date, categories.category, author
FROM articles LEFT JOIN categories
ON articles.category = categories.category_id
$where ORDER BY article_id DESC LIMIT 4";
$result = query($sql);
所需类别的有效URL可以以
blog.php?cart\u id=1
结尾,您可以使用$\u GET['cat\u id']
或$\u请求['cat\u id']
访问category\u id
。在PHP的if-else
块中使用它。请阅读该怎么做。提示:很多问题都可以通过它来检测和解决,因此简单错误导致的错误不容易被忽略。毫无例外,您必须密切关注返回值,其中许多表示您必须解决或向用户报告的问题。异常允许更复杂的流控制,因为它们可以“冒泡”到您的代码的其他部分,以便更方便地处理它们。非常感谢您我感谢您花时间帮助我,这很有意义再次感谢!