1

昨日、私はこの質問をしました: https://stackoverflow.com/questions/15117767/add-dynamic-content-to-otherwise-static-php-page あまり正確ではない質問で申し訳ありません。一人でできることは増えましたが、まだいくつか質問があります。

「id」、「news_headline」、「news_date」、「news_teaser」、「news_content」、「news_external_link」という列を使用して、ニュースをデータベーステーブルに入れることができました。

私のニュース/index.php には、次のコードがあります。

<?php
     $con=mysqli_connect("localhost", "XXX", "oizQvdjh", "usr_web3_1");
     // Check connection
     if (mysqli_connect_errno())
     {
           echo "Failed to connect to MySQL: " . mysqli_connect_error();
     }
     $result = mysqli_query($con,"SELECT * FROM tbl_news ORDER BY id DESC");

     while($row = mysqli_fetch_array($result))
     {
       echo "<li class='clearfix'>";
       echo "<a class='news_pic'><img src='/assets/images/news/news_".$row['id']
                  ."_thumb.jpg'></a>";
       echo "<h2 class='info_headline'>" . $row['news_headline'] . "</h2>";
       echo "<p class='date'>" . $row['news_date'] 
                  . " &ndash; <a href='#disqus_thread'></a></p>";
       echo "<p class='news_text'>" . $row['news_teaser'] 
                  . "<br><a class='more-link' href='WHERE_TO'>Read more</a></p>";
       echo "</li>";
     }

     mysqli_close($con);
?>

すべてが見栄えがよく、データベースからすべてのニュースを取得し(これまでのところ5つ)、IDに応じた名前でサーバーに自分でアップロードした画像を取得します。

単一のニュース側には、「WHERE」ステートメントがあり、ティーザーではなくコンテンツ テキストを取得する以外は同じコードがあります。

$result = mysqli_query($con,"SELECT * FROM tbl_news WHERE id='1' ORDER BY id DESC");

while($row = mysqli_fetch_array($result))
{
   echo "<h2>" . $row['news_headline'] . "</h2>";
   echo "<p class='date'>" . $row['news_date'] 
         . " &ndash; <a href='#disqus_thread'></a></p>";
   echo "<a class='news_pic'><img src='/assets/images/news/news_".$row['id']."
         .jpg'></a>";
   echo "<p class='news_text'>" . $row['news_content'] . "</p>";
}

mysqli_close($con);

?>

今私の質問に。単一のニュースのファイルを保存して、動的に更新するにはどうすればよいですか。href が「WHERE TO」と表示されているインデックスで、次のようなリンクが必要です<a href="<?php echo $row['news_date'] + slug(テーブルに列スラッグを追加します)。

ニュース 1 つの php が生成され、URL に日付とスラッグが含まれている必要があります。XXX/news/2013-02-18_this-is-a-news-site.php のように、そのためには WHERE コマンドに変数を入れる必要があることも知っています: WHERE id=1--> id="GET AUTOMATICALLY" の代わりに。また、ここに何を入れたらよいかわかりません。

4

1 に答える 1

0

ちなみに、あなたの質問はあまり明確ではありません:

mod_rewrite を有効にして、適切な書き換えルールを選択する必要があります。

次のような .htaccess ファイルを作成します。

RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php?path=$1 [L,QSA]

みたいなURL

http://your.site.com/news/2012/10/22

に変換されます

http://your.site.com/index.php?path=/news/2012/10/22

クエリ文字列から「パス」を取得し、クエリを作成します。入力を適切にサニタイズしてください。

2012/10/22 はほぼ mysql の有効な日付です。「/」を「-」に置き換えるだけです。

$dt=str_replace('/','-',substr($path,6));

有効な日付であることを確認します。

$dt=date('Y-m-d',strtotime($dt));

今、あなたのクエリは

$query="SELECT * FROM tbl_news WHERE news_date='$dt'";

このクエリは、特定の日のすべてのニュースを提供します。

于 2013-02-28T13:49:39.050 に答える