我正在使用php-mysql开发一个新闻网站。
这是表格:
news_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
news_title VARCHAR(250) NOT NULL,
news_short_description TEXT NOT NULL,
news_full_content TEXT NOT NULL,
news_author VARCHAR(30) NOT NULL,
news_published_on DATE NOT NULL
)";
将在网站的索引页面上显示文章。
$sql = "SELECT news_id,news_title,news_short_description,news_full_content,news_author,news_published_on FROM ARTICOLI ORDER BY news_id DESC LIMIT 10";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<h3>". $row["news_title"]. " </h3><br> " . $row["news_short_description"]. "<br> " ."Posted by ". $row["news_author"]. "<br>";
}
} else {
echo "0 results";
}
我需要什么? 我不知道如何为单篇文章创建自动页面和链接。 示例:www.website.com/this-is-the-title-of-the-article。 我正在考虑使用db表的id,但是如何选择一个精确的行? 你能帮助我吗?谢谢!!! ;)
答案 0 :(得分:1)
一个想法。
首先,您需要在表格中添加一个slug字段(https://en.wikipedia.org/wiki/Semantic_URL#Slug),该字段将以this-is-the-title-of-the-article
的形式保存标题。
这里的假设是&#34; slug&#34;将需要是表中的唯一字符串。
其次,你需要使用某种重写机制(例如apache的mod_rewrite)来转换www.website.com/this-is-the-title-of-the-article形式的请求你可以通过PHP脚本处理。 例如www.website.com/this-is-the-title-of-the-article被重写为www.website.com/index.php?q=this-is-the-title-of-the-article )。
示例.htaccess
RewriteRule ^(.*)$ /index.php?q=$1 [L]
index.php
<?php
$articleSlug = isset($_GET(["q"])?$_GET["q"]:null;
if ($articleSlug !== null) {
$query = "SELECT news_id,news_title,news_short_description,news_full_content,news_author,news_published_on FROM ARTICOLI WHERE slug=?"; // Bind the ? to $articleSlug
//Execute SQL here and echo the results
} else {
// 404 error
}
我理解这是一个非常模糊的描述,这只是一种方法。我个人建议你研究一下像MVC这样的MVC框架。已经内置了所有这些功能的Laravel。