2010-03-10 37 views
1

我正在自己的网站上撰写自己的新闻文章部分,并将每篇文章存储在mysql数据库中。每篇文章都有一个独特的ID,一个标题,主体和感谢jquery插件,它是自己的网址友好的slu。。使用slug从my​​sql获取文章

但是,我不知道如何在链接到slu fet时去取回文章。

我如何获得:

www.site.com/news/nice-looking-title/ 

工作,如:

www.site.com/news/index.php?id=1 

,这样我就可以使用SQL来获取该记录从MySQL表,例如:

tbl_news: 
news_id 
news_title 
news_slug 
news_body 
news_date 

是这样做的.htacccess参与吗?

与往常一样,所有和任何帮助是最感谢! :)

保罗

回答

0

你需要改变你的SQL查询通过news_slug而不是news_id选择。一个简单的应用程序可能如下:

的.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/news #only do this for URLs beginning /news 
RewriteRule (.*) /news/index.php [L] #redirect control to index.php 

PHP

$slug = explode('/', $)SERVER['REQUEST_URI']); // turn the path into an array 
$slug = $slug[2]; // get the 2nd part of the array (nice-looking-title) 
$query = sprintf ("SELECT * FROM tbl_news WHERE news_slug = '%s'", $slug); // new SQL query 

注:这并没有得到测试,因此可能有错误!

+0

它几乎可行! :) 使用这个重写造成了一个无限循环,所以将其改为: RewriteRule /news/(.*)/news/index.php 实现您建议的PHP给了我一个404错误,显示为我想要的,所以我比我更近了一步! – 2010-03-10 15:23:16

0

好的,这里是我不得不做的解决这个问题。有点哈克,但它的作品。

让RewriteRule(。*)/news/index.php在网站上导致无限循环,就像在新闻目录中使用php页面一样。所以我不得不发送指向不同目录名称的链接,并将它们重写到实际的目录中。

的.htaccess

RewriteCond %{REQUEST_URI} /guild-news 
RewriteRule guild-news/(.*)/ news/news-item.php?slug=$1 
RewriteRule guild-news/(.*) news/news-item.php?slug=$1 

PHP

$slug=$_GET['slug']; 
$newsSQL = "SELECT *, DATE_FORMAT(news_date, '%W, %D %M, %Y') news_date_f FROM tbl_news WHERE news_slug = '".$slug."' AND news_visible=1"; 
$result = mysql_query($newsSQL, $conn) or die(mysql_error()); 

所以可能不是最好的代码以往,但它的工作强大的罚款我的需要:)