gpt4 book ai didi

php - 使用 PHP 和 MySQL 的 Bootstrap 分页

转载 作者:可可西里 更新时间:2023-10-31 23:06:09 25 4
gpt4 key购买 nike

我是 Bootstrap 的新手,我正在尝试在页面的其中一个部分上实现分页以正确表示数据。有人可以帮忙吗?

这是代码现在的样子的快照。如何实现分页以便只显示 10 条记录?谢谢。

<section class="success" id="all-confessions">
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<h2>All Confessions</h2>
<hr class="star-light">
</div>
</div>
<div class="row">
<div class="row text-left">
<?php
$allconfession = mysql_query("SELECT * FROM collection ORDER BY date DESC");

while($result2 = mysql_fetch_array($allconfession)) {
$id = $result2['id'];
?>
<div class="col-md-3 col-md-offset-1">
<h5>#<?php echo $id; ?></h5>
</div>
<div class="col-md-10 col-md-offset-1">
<p class="para-confess">
<?php
echo $result2['type'] ." from ". $result2['college'] ." of ". $result2['department'] ." confessed ". $result2['confession'];
?>
</p>
<div class="text-left">
<?php
if(isset($_COOKIE['uname'])) {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="cid" style="display: none;" value="<?php echo $id; ?>">
<button type="submit" class="btn btn-success fa fa-thumbs-up" name="like"> Cool</button>
<button type="submit" class="btn btn-warning fa fa-thumbs-down" name="dislike"> WTF</button>
</form>
<?php
}
?>
</div>
<div class="text-right">
<i class="fa fa-thumbs-o-up">
<?php
$likes = mysql_query("SELECT COUNT(*) FROM activity WHERE cid = $id AND ld = 1");
$alikes = mysql_fetch_row($likes);
echo $alikes[0];
?>
</i> &nbsp;
<i class="fa fa-thumbs-o-down">
<?php
$dislikes = mysql_query("SELECT COUNT(*) FROM activity WHERE cid = $id AND ld = 0");
$adislikes = mysql_fetch_row($dislikes);
echo $adislikes[0];
?>
</i>
</div>
<hr/>
</div>
<?php
}
?>
</div>
</div>
</div>
</section>

最佳答案

首先,请了解一下PDO http://php.net/manual/en/book.pdo.php .在我的解决方案中,我假设您使用的是 PDO。

您需要做的第一件事是确定数据库中实际有多少行。

$nbOfResults = $pdo->query('select count(*) from collection')->fetchColumn();

然后设置每页实体的一些限制。

$entitiesPerPage = 10; 

现在让我们确定应该有多少页。首先,我将结果数除以 entitiesPerPage。假设有 202 个结果。将它除以 10(每页实体)将得到 20 页(转换为 int)。但是还剩下 2 个实体。这就是为什么我必须检查模数并在需要时再添加一页。

$nbOfPages = intval($nbOfResults / $entitiesPerPage);

if( ($entitiesPerPage % $nbOfResults) !== 0 ) {
$nbOfPages += 1
}

现在我们准备好构建分页了。但首先我们需要有一个保存当前页面的变量。

$currentPage = $_GET['page']; 

或者以更优雅的方式。

$currentPage = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_NUMBER_INT);

但是,如果没有任何页面,我们假设我们在第一页上。

if(!$currentPage) { $currentPage = 1 }

好的,现在是时候用一个数组来保存分页信息了。

$pagination = [];

if ($currentPage !== 1) {
$pagination[] = [
'page' => 'Previous',
'link' => '?page=' . ($currentPage - 1),
'active' => false,
];
}

for($i = 1; $i <= $nbOfPages; $i++) {
$pagination[] = [
'page' => $i,
'link' => '?page=' . $i,
'active' => ( $i === $currentPage ),
];
}

if ($currentPage !== $nbOfPages) {
$pagination[] = [
'page' => 'Next',
'link' => '?page=' . ($currentPage + 1),
'active' => false,
];
}

最后是获取当前页面结果的查询。

$query = 'SELECT * FROM collection ORDER BY date DESC LIMIT ? OFFSET ?';
$sth = $dbh->prepare($query);
$sth->execute(array($entitiesPerPage, ( $currentPage - 1 ) * $entitiesPerPage)));

现在您所要做的就是遍历 $pagination 变量并打印正确的 Bootstrap HTML。

关于php - 使用 PHP 和 MySQL 的 Bootstrap 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26984409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com