2010-03-10 4 views
1

내 사이트에 내 기사 기사 섹션을 작성하고 각 기사를 mysql 데이터베이스에 저장합니다. 각 기사에는 고유 한 ID, 제목, 본문이 있으며 jquery 플러그인 덕분에 URL에 친숙한 슬러그입니다.슬러그를 사용하여 mysql에서 기사 가져 오기

그러나 지구상에서 슬러그에 연결될 때 기사를 가져 오는 방법을 잘 모릅니다.

어떻게받을 수 있나요 :

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

이 작동하려면 같은 :

tbl_news: 
news_id 
news_title 
news_slug 
news_body 
news_date 
: 그래서 난 후 MySQL의 테이블에서 같은 기록을 가져 오기 위해 SQL을 사용할 수있는

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

은이 작업과 관련된 .htaccess입니다.

언제나처럼 모든 도움을 받으실 수 있습니다! :)

답변

0

당신은 news_slug 대신 news_id에 의해 선택하여 SQL 쿼리를 변경해야합니다. 다음과 같이 간단한 응용 프로그램이 될 수있다 :

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 

참고 :이 오류를 가질 수 있습니다 SO 테스트되지 않았습니다!

+0

에 대한 강력한 잘 작동 않습니다 그것은 거의 작동합니다! : thise 재 작성을 사용하여 그래서 그것을 변경, 무한 루프를 발생 : 당신의 제안 PHP 나에게 404 오류를 제공합니다 구현 /news/index.php RewriteRule의 /news/(.*)하지만, 브라우저의 URL 내가 원하는대로 표시되므로, 나는 내가했던 것보다 몇 걸음 더 가까이에있다! –

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()); 

그래서 아마 가장 좋은 코드가 이제까지하지만 내 요구 :

관련 문제