Php 基于MySQL页面的查询
我目前正在为一个内容站点开发一个分页系统 目前,用户每页将看到10个结果。当用户访问时,它应该显示表中的前10个条目。如果他们访问,则应显示随后的10个结果 下面是我当前执行任务的功能,当访问一个页面时,它似乎不起作用-有什么想法可能导致这种情况吗Php 基于MySQL页面的查询,php,mysql,Php,Mysql,我目前正在为一个内容站点开发一个分页系统 目前,用户每页将看到10个结果。当用户访问时,它应该显示表中的前10个条目。如果他们访问,则应显示随后的10个结果 下面是我当前执行任务的功能,当访问一个页面时,它似乎不起作用-有什么想法可能导致这种情况吗 function getPagedPosts() { $pageid = $_GET[page]; $page = $pageid - 1 * 10; $options = array(PDO::MYSQL_ATTR_INIT_COMMAND =&g
function getPagedPosts() {
$pageid = $_GET[page];
$page = $pageid - 1 * 10;
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
$query = "
SELECT *
FROM content
LIMIT '$page', 10
";
try
{
$stmt = $db->prepare($query);
$stmt->execute();
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$rows = $stmt->fetchAll();
foreach($rows as $row):
print '<tr><td><a href="post/' . $row['id'] . '">' . $row['title'] . '</a><div class="sub ' . $row['subject'] . '">' . $row['subject'] . '</div></td></tr>';
endforeach;
函数getPagedPosts(){
$pageid=$\u获取[页面];
$page=$pageid-1*10;
$options=array(PDO::MYSQL_ATTR_INIT_命令=>'SET NAMES utf8');
$db=newpdo(“mysql:host={$host};dbname={$dbname};charset=utf8”,$username,$password,$options);
$query=”
挑选*
从内容
限制“$page”,10页
";
尝试
{
$stmt=$db->prepare($query);
$stmt->execute();
}
捕获(PDO异常$ex)
{
die(“无法运行查询:”..ex->getMessage());
}
$rows=$stmt->fetchAll();
foreach($行作为$行):
打印“.$row['subject']”;
endforeach;
}我创建了一个称为分页的函数:
<?php
function pagination($query, $per_page = 10,$page = 1, $url = '?'){
$query = "SELECT COUNT(*) as `num` FROM {$query}";
$row = mysql_fetch_array(mysql_query($query));
$total = $row['num'];
$adjacents = "2";
$page = ($page == 0 ? 1 : $page);
$start = ($page - 1) * $per_page;
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total/$per_page);
$lpm1 = $lastpage - 1;
$pagination = "";
if($lastpage > 1)
{
$pagination .= "<ul class='pagination'>";
$pagination .= "<li class='details'>Page $page of $lastpage</li>";
if ($lastpage < 7 + ($adjacents * 2))
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";
}
}
elseif($lastpage > 5 + ($adjacents * 2))
{
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";
}
$pagination.= "<li class='dot'>...</li>";
$pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
$pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";
}
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<li><a href='{$url}page=1'>1</a></li>";
$pagination.= "<li><a href='{$url}page=2'>2</a></li>";
$pagination.= "<li class='dot'>...</li>";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";
}
$pagination.= "<li class='dot'>..</li>";
$pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
$pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";
}
else
{
$pagination.= "<li><a href='{$url}page=1'>1</a></li>";
$pagination.= "<li><a href='{$url}page=2'>2</a></li>";
$pagination.= "<li class='dot'>..</li>";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";
}
}
}
if ($page < $counter - 1){
$pagination.= "<li><a href='{$url}page=$next'>Next</a></li>";
$pagination.= "<li><a href='{$url}page=$lastpage'>Last</a></li>";
}else{
$pagination.= "<li><a class='current'>Next</a></li>";
$pagination.= "<li><a class='current'>Last</a></li>";
}
$pagination.= "</ul>\n";
}
return $pagination;
}
?>
<?php
//get the function
include_once ('include/functions/pagination.php');
$page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]);
$limit = 5;
$startpoint = ($page * $limit) - $limit;
//to make pagination
$statement = "`prodcat_mst`"; //table name 'prodcat_mst'
?>
显示分页:
<?php
echo pagination($statement,$limit,$page);
?>
希望这能有所帮助。到底出了什么问题?(但是,幸运的是:删除查询中
'$page'
周围的引号,字符串对于LIMIT
子句无效。我会将其设置为$page=(max((int)$pageid,1)-1)*10、
对于摆弄你的URL的人来说也是如此……谢谢你-现在一切似乎都正常了!没有显示关于你的问题的结果。现在效果很好。
<?php
echo pagination($statement,$limit,$page);
?>