使用 DB2 pureXML 和 PHP 构建 Support Knowledge Base(下)
2010-02-25 00:00:00 来源:WEB开发网上面的清单包含显示最新文章的代码。该代码在逻辑上与显示评分最高的文章和浏览量最大的文章的代码基本相同。
主页面使用 Article 类的两个函数:getTopArticles 和 getHighestRatedArticles。getTopArticles 函数接受一个参数,该参数被插入到 ORDER BY 子句来判断如何对结果排序。这些函数中的每一个返回一个文章数组。脚本随后遍历返回的数组并显示每篇文章的链接以及有关此文章的更细节的内容。图 12 显示了一个主页面的示例。
图 12. 主页面
PHP 构建 Support Knowledge Base(下)" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>
创建 Search Results 和 View Category 页面
Search Results 和 View Category 页面比较类似。Search Results 页面根据用户在搜索表单(应用程序的每个页面的顶部)中输入的搜索词返回结果。View Category 页面显示属于某个特定类别的所有文章。类别的 ID 通过左侧的导航类别链接或 Manage Categories 管理页面传递给该页面。
创建一个名为 search_results.php 的文件,将清单 26 中的代码复制到其中,将文件保存到项目的根目录中。
清单 26. search_results.php
<?php
require_once("classes/article.php");
if(isset($_GET['query'])) {
$search_term = $_GET['query'];
$article = new Article;
$search_articles = $article->getArticlesBySearchTerm($search_term);
$title = "Search Results for "$search_term"";
}
include("includes/header.php");
?>
<div class="box">
<div class="box_header">
<?php echo $title; ?>
</div>
<div class="box_content">
<?php
if(is_array($search_articles) && count($search_articles) > 0) {
for($i = 0; $i < count($search_articles); $i++) {
$art_id = $search_articles[$i][0];
$art_title = $search_articles[$i][1];
$art_dc = $search_articles[$i][2];
$art_vc = $search_articles[$i][3];
$comments = $article->countCommentsByArticleId($art_id);
$rating = $article->getRatingByArticleId($art_id);
$rating_count = $rating['rating_count'];
$rating_average = number_format($rating['rating_average'], 2, '.', '');
if($rating_average == 0) $rating_average = "Not yet rated";
if(($i+1) % 2 == 0) echo '<div class="box_item">';
else echo '<div class="box_item odd">';
echo '<div class="box_item_title"><a
href="article_view.php?id='.$art_id.'">'.$art_title.'</a></div>';
echo '<div class="box_item_date">'.$art_dc.'</div>';
echo '<div class="box_item_category">'.$art_vc.'
view(s)</div>';
echo '<div class="box_item_comments">'.$comments.'
Comment(s)</div>';
echo '<div class="box_item_rating">Rating: '.$rating_average.'
('.$rating_count.' votes)</div>';
echo '<div class="clear"> </div>';
echo '</div>';
}
} else {
echo '<div>No articles found that match the query
<strong>'.$search_term.'</strong></div>';
}
?>
</div>
</div>
<?php
include("includes/footer.php");
?>
更多精彩
赞助商链接