2012-12-26 69 views
0

我在從where is用破折號分隔的頁面獲取內容時遇到問題。例如,如果我去www.example.com/home它工作正常,但如果我去例如www.example.com/about-us它會得到一個錯誤Trying to get property of non-object至於錯誤說是關於這條線;獲取slu and並用破折號寫入內容

<h1><?php echo $page->Title; ?></h1> 
<?php echo $page->Content; ?> 

我有一個函數,從數據庫中得到的slug看起來像這樣;

function getSlug($name = null) { 
global $db; 
if ($name) { 
    $query = $db->prepare('SELECT * FROM pages WHERE `Title` = ? LIMIT 1'); 
    $query->execute(array($name)); 
    return $query->fetchObject(); 
} 
} 

我也有一個函數來創建看起來像這樣的slu;;

function createSlug($string){ 
    $string = preg_replace('/[«»""!?,[email protected]£$%^&*{};:()]+/', '', $string); 
    $string = strtolower($string); 
    $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string); 
    return $slug; 
} 

在我的htaccess我有規則RewriteRule ^([a-zA-Z0-9-/]+)$ index.php?name=$1 [L]

得到我使用下面的代碼的內容;

<?php 
    include 'header.php'; 
    $slug = create_slug($_GET['name']); 
    $page = getSlug($slug); 
?> 
<div class="container"> 
    <h1><?php echo $page->Title; ?></h1> 
    <?php echo $page->Content; ?> 
<?php include 'footer.php'; ?> 

我真的沒有任何線索是什麼問題。任何幫助將非常感激。

在此先感謝。親切的問候

回答

0

檢查ModRewrite模塊啓用,並在.htaccess檢查下面的行添加在頂部。

RewriteEngine On 
+1

感謝您的快速回復@ sk8terboi87,我htaccess的是這樣的; ' \t RewriteEngine敘述在 \t#RewriteBase/ \t#重寫所有其他URL的index.php/URL \t重寫規則^([A-ZA-Z0-9 - /] +) $的index.php?名1 = $ [L] \t 的ErrorDocument 404的index.php ' –

0

我已經在我的DATABSE稱爲彈頭添加一行解決了這個問題,我認爲這也將是更好的,如果我想蛞蝓是不同的,那麼標題。

謝謝你的努力@ sk8terboi87

+0

是的,那將是巨大的。而不是改變htaccess,保存在DB分鐘和簡單地顯示「sluggified」鏈接,好! –