2010-03-10 80 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()); 

所以可能不是最好的代碼以往,但它的工作強大的罰款我的需要:)