从数据库中获取ID计数并生成到新闻的动态链接


Get ID count from Database and generate dynamic links to news

昨天我问了这个问题: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的名称。

单独的News端具有相同的代码,除了它有一个"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这样的链接(我会在我的表中添加一个列段)。 然后应该生成新闻单php,并且还应该在URL中显示日期和标签。喜欢XXX/新闻/2013 - 02年- 18 - _this - - -新闻- site.php我知道,为此,我还必须在WHERE命令中放入一个变量:而不是WHERE id=1 --> id="GET AUTOMATICALLY"。我也不知道这里该放什么

顺便说一下,你的问题不是很清楚:

您需要启用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

从querystring中获取'path'并创建查询。请务必对输入进行适当的消毒。

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'";

此查询将为您提供特定日期的所有新闻。