0

スラッグがダッシュで区切られているページからコンテンツを取得する際に問題があります。たとえば、そこに行くとwww.example.com/home正常に動作しますが、たとえばに行くと、www.example.com/about-usエラーTrying to get property of non-objectがこの行に関するものであるとエラーが発生します。

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

次のようなデータベースからスラッグを取得する関数があります。

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

このようなスラッグを作成する関数もあります。

function createSlug($string){
    $string = preg_replace( '/[«»""!?,.!@£$%^&*{};:()]+/', '', $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'; ?>

何が問題なのか、まったくわかりません。どんな助けでも大歓迎です。

前もって感謝します。敬具

4

2 に答える 2

0

ModRewrite モジュールが有効になっていることを確認し、.htaccess で以下の行が一番上に追加されていることを確認します。

RewriteEngine On
于 2012-12-26T11:12:33.953 に答える
0

Slug という名前のデータベースに行を追加することで問題を解決しました。これは、タイトルとは異なるスラッグにしたい場合にも適していると思います。

努力してくれてありがとう@ sk8terboi87

于 2012-12-26T11:39:03.197 に答える