我正在使用来自http://www.jongales.com/blog/2009/01/27/php-class-for-threaded-comments/的线索评论,我不知道如何实现分页系统。如果有人能指出我的方向或某事,因为我寻找解决方案,但没有找到任何东西......
public $parents = array();
public $children = array();
function __construct($comments)
{
foreach ($comments as $comment)
{
if ($comment['parent_id'] === NULL)
{
$this->parents[$comment['id']][] = $comment;
}
else
{
$this->children[$comment['parent_id']][] = $comment;
}
}
}
private function format_comment($comment, $depth)
{
If($depth == 0){
?>
<br /><?php echo $comment['name']; ?><br /><?php echo $comment['datetime']; ?><br /><?php echo $comment['text']; ?></div>
<a href="javascript:toggleDiv('<?php echo $comment['id']; ?>');">Raspunde</a>
<div id="<?php echo $comment['id']; ?>" style="display: none;">
The content in this div will hide and show (toggle) when the toggle is pressed.
</div>
<?php
}
If($depth > 0){
?>
<div style="margin-left: 20px;">
<br /><?php echo $comment['name']; ?><br /><?php echo $comment['datetime']; ?><br /><?php echo $comment['text']; ?></div>
</div>
<?php
}
}
private function print_parent($comment, $depth = 0)
{
foreach ($comment as $c)
{
$this->format_comment($c, $depth);
if (isset($this->children[$c['id']]))
{
$this->print_parent($this->children[$c['id']], $depth + 1);
}
}
}
public function print_comments()
{
foreach ($this->parents as $c)
{
$this->print_parent($c);
}
}}
$username = "Netra";
$SQL = "SELECT * FROM profile_comments WHERE name = '$username' ORDER BY datetime DESC";
$result = mysql_query($SQL) or die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
$id = $row['id'];
$parent_id = $row['parent_id'];
$name = $row['name'];
$text = $row['text'];
$datetime = $row['datetime'];
$comments[] = array(
'id' => $id,
'parent_id' => $parent_id,
'name' => $name,
'text' => $text,
'datetime' => $datetime
);
}
$threaded_comments = new Threaded_comments($comments);
$threaded_comments->print_comments();
答案 0 :(得分:1)
分页只会改变您查询中的两件事。它将根据当前页面设置LIMIT和OFFSET。涉及的部分很少,主要是知道偏移量。这很简单,始终是(PAGE_NUMBER * NUMBER_PER_PAGE) - NUMBER_PER_PAGE。然后根据当前页面动态更改sql!
它看起来像这样:
<?php
class Pagination{
public $total_results;
public $total_pages;
public $per_page;
public $offset;
public $page;
public function __construct($per_page=20, $total_results=0, $page=1){
$this->per_page = $per_page;
$this->total_results = $total_results;
$this->page = $page;
$this->set_total_pages();
$this->set_offset();
$this->prepare_displays();
}
public function set_total_pages(){
$this->total_pages = ceil($this->total_results / $this->per_page);
}
public function set_offset(){
$this->offset = ($this->page * $this->per_page) - $this->per_page;
}
public function has_next_page(){
if($this->page < $this->total_pages){
return true;
}else{
return false;
}
}
public function has_previous_page(){
if($this->total_pages > 1 && $this->page > 1){
return true;
}else{
return false;
}
}
public function check_page_exists(){
return (($this->total_pages > 0) && ($this->page > $this->total_pages)) || $this->page < 1 ? false : true;
}
}
?>