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”

在我的 news/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);
?>

那里的一切看起来都很棒,它从数据库中获取了我所有的新闻(到目前为止有五个),并获取了我自己上传到服务器上的图像,并根据 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(我会在我的表中添加一个列 slug)。

然后应该生成新闻单 php,并且还应该在 URL 中显示日期和 slug。就像 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]

像这样的网址

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 回答