1

是的,我真的很希望有人能帮助我,因为我很难过。基本上,我正在为使用 mysql 数据库和 php 的公司重新设计网站,以提供新闻存档类型部分。除了一件事,一切都很好。我正在从数据库中提取信息以提供片段视图,并使用 mysql 数据库中的 newsTitle 列将信息放入相应锚点的链接文本中,该链接文本可以使用 $_GET 函数从相应页面检索。问题是,虽然主要是唯一的,但有许多新闻标题条目是重复的,但每个条目的内容是不同的。旧网站通过在每个副本的末尾(在页面上)添加后缀 -0 然后 -1 等等来处理这个问题,但我不知道如何做到这一点。

我需要检查的变量是 $title/$url 中包含的变量,与生成的所有其他版本的 $title/$url 相比。请注意:我必须使用后缀而不是 id 来使每个页面都独一无二,因为这是旧版本网站所做的,我不想破坏来自 Google 的链接或丢失“链接汁”。

这是我的代码(我是一个 n00b,所以请原谅我的糟糕之处):

mysql_connect($host, $user, $pass) or die ("Unable to connect!"); 

@mysql_select_db($db) or die ("Unable to select database!");

$sql = "SELECT * FROM tblnews WHERE YEAR(newsDate) >= $startyear AND YEAR(newsDate) <=     $endyear AND newsPageID = 13 ORDER BY  `tblnews`.`newsDate` DESC LIMIT $offset, $rowsperpage";

$result3 = mysql_query($sql, mysql_connect($host, $user, $pass)) or die ("Unable to connect!");

$querytable="SELECT * FROM tblnews WHERE YEAR(newsDate) >= $startyear AND YEAR(newsDate) <= $endyear AND newsPageID = 13 ORDER BY  `tblnews`.`newsDate` DESC";

$result=mysql_query($querytable);


mysql_close();

$i= ($currentpage - 1) * 4;

while ($list = mysql_fetch_assoc($result3)) {

$title=mysql_result($result,$i,"newsTitle");
$titlelower = strtolower ($title);
$changedwords = array(' is ', ' with ', ' on ', ' to ', ' for ', ' the ', ' at ', ' a ', ' in ', ' of ', '"', "'", ':', '(', ')', ';', '?', '!', '.', ',', '&', '£', '/');
$replacements = array('-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '', '', '', '', '', '', '', '', '', '', '', '', '-');
$url = str_replace ($changedwords, $replacements, $titlelower);
$url = str_replace (" ", "-", $url);
$url = str_replace ("---", "-", $url);
$url = str_replace ("--", "-", $url);
$date=mysql_result($result,$i,"newsDate");
$shortdescription=mysql_result($result,$i,"newsTeaser");
$id=mysql_result($result,$i,"newsID");

?>
<div id="release" <?php if($odd = $i%2 ) { echo 'style="background-color:#d2d2d2;"';
} else { echo 'style="background-color:#dbdbdb;"'; } ?> >
<p>&nbsp;</p>
<h3><a href="questionsarticle.php?pagetitle=<?php echo $url; ?>&id=<?php echo $id; ?>"><?php echo $title; ?></a></h3>
<p style="font-size:12px;color:#666;font-style:italic;">- <?php echo date('l, jS F Y',strtotime($date)); ?></p>
<p>&nbsp;</p>
<p><?php echo $shortdescription; ?></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
<?php
$i++;
}
?>
4

1 回答 1

0

从哪个新闻文章应该具有哪个 URL 后缀的问题中不清楚,但假设它是基于由 newsID 确定的年龄,您将必须计算每个重复标题的旧新闻的数量。

这可以通过将 tblnews 连接到自身,并计算具有相同标题但 newsID 低于给定文章的行来完成。

您修改后的查询,包括每篇文章的旧文章数量的列,将是:

SELECT DISTINCT news.*, COUNT(older.newsID) AS older
FROM tblnews news
LEFT JOIN tblnews older
ON older.newsTitle = news.newsTitle
AND older.newsID < news.newsID
WHERE year(news.newsDate) >= $startYear
AND year(news.newsDate) <= $endYear
AND news.newsPageID = 13
GROUP BY news.newsID
ORDER BY news.newsDate DESC;
于 2012-11-15T14:17:32.180 回答