Php 帮助修复分页类
这是我的分页课。构造中的数据只是执行db查询和其他操作的另一个类。我遇到的问题是,我似乎无法获得与分页打印匹配的数据输出,也无法获得mysql_fetch_assoc来查询数据并将其打印出来。我得到这个错误:Php 帮助修复分页类,php,oop,pagination,Php,Oop,Pagination,这是我的分页课。构造中的数据只是执行db查询和其他操作的另一个类。我遇到的问题是,我似乎无法获得与分页打印匹配的数据输出,也无法获得mysql_fetch_assoc来查询数据并将其打印出来。我得到这个错误: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /phpdev/pagination/index.php on line 215 我知道这可能意味着查询不正确,
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /phpdev/pagination/index.php on line 215
我知道这可能意味着查询不正确,无法获取数据,但我输入的数据是正确的。很抱歉脚本有点长。我提前感谢大家的帮助
<?php
include_once("class.db.php");
mysql_connect("host","login","password");
mysql_select_db("iadcart");
class Pagination {
var $adjacents;
var $limit;
var $param;
var $mPage;
var $query;
var $qData;
var $printData;
protected $db;
function __construct() {
$this->db = new MysqlDB;
}
function show() {
$result = $this->db->query($this->query);
$totalPages = $this->db->num_rows($result);
$limit = $this->limit;
/* -------------------------------------
Set Page
------------------------------------- */
if(isset($_GET['page'])) {
$page = intval($_GET['page']);
$start = ($page - 1) * $limit;
} else {
$start = 0;
}
/* -------------------------------------
Set Page Vars
------------------------------------- */
if($page == 0) {
$page = 1;
}
$prev = $page - 1;
$next = $page + 1;
$lastPage = ceil($totalPages/$limit);
$lpm1 = $lastPage - 1;
$adjacents = $this->adjacents;
$mPage = $this->mPage;
//the magic
$this->qData = $this->query . " LIMIT $start, $limit";
$this->printData = $this->db->query($this->qData);
/* -------------------------------------
Draw Pagination Object
------------------------------------- */
$pagination = "";
if($lastPage > 1) {
$pagination .= "<div class='pagination'>";
}
/* -------------------------------------
Previous Link
------------------------------------- */
if($page > 1) {
$pagination .= "<li><a href='$mPage?page=$prev'> previous </a></li>";
} else {
$pagination .= "<li class='previous-off'> previous </li>";
}
/* -------------------------------------
Page Numbers (not enough pages - just display active page)
------------------------------------- */
if($lastPage < 7 + ($adjacents * 2)) {
for($counter = 1; $counter <= $lastPage; $counter++) {
if($counter == $page) {
$pagination .= "<li class='active'>$counter</li>";
} else {
$pagination .= "<li><a href='$mPage?page=$counter'>$counter</a></li>";
}
}
}
/* -------------------------------------
Page Numbers (enough pages to paginate)
------------------------------------- */
elseif($lastPage > 5 + ($adjacents * 2)) {
//close to beginning; only hide later pages
if($page < 1 + ($adjacents * 2)) {
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) {
if ($counter == $page) {
$pagination.= "<li class='active'>$counter</li>";
}
else {
$pagination.= "<li><a href='$mPage?page=$counter'>$counter</a></li>";
}
}
$pagination.= "...";
$pagination.= "<li><a href='$mPage?page=$lpm1'>$lpm1</a></li>";
$pagination.= "<li><a href='$mPage?page=$lastPage'>$lastPage</a></li>";
}
elseif($lastPage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) {
$pagination.= "<li><a href='$mPage?page=1'>1</a></li>";
$pagination.= "<li><a href='$mPage?page=2'>2</a></li>";
$pagination.= "...";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) {
if ($counter == $page) {
$pagination.= "<li class='active'>$counter</li>";
}
else {
$pagination.= "<li><a href='$mPage?page=$counter'>$counter</a></li>";
}
}
$pagination.= "...";
$pagination.= "<li><a href='$mPage?page=$lpm1'>$lpm1</a></li>";
$pagination.= "<li><a href='$mPage?page=$lastPage'>$lastPage</a></li>";
}
else {
$pagination.= "<li><a href='$mPage?page=1'>1</a></li>";
$pagination.= "</li><a href='$mPage?page=2'>2</a></li>";
$pagination.= "...";
for ($counter = $lastPage - (2 + ($adjacents * 2)); $counter <= $lastPage; $counter++) {
if ($counter == $page) {
$pagination.= "<li class='active'>$counter</li>";
}
else {
$pagination.= "<li><a href='$mPage?page=$counter'>$counter</a></li>";
}
}
}
}
/* -------------------------------------
Next Link
------------------------------------- */
if ($page < $counter - 1) {
$pagination.= "<li><a href='$mPage?page=$next'> Next </a></li>";
}
else {
$pagination.= "<li class='next-off'> Next </li>";
$pagination.= "</div>";
}
print $pagination;
}
}
?>
<html>
<head>
</head>
<body>
<table style="width:800px;">
<?php
mysql_connect("localhost","root","games818");
mysql_select_db("iadcart");
$pagination = new pagination;
$pagination->adjacents = 3;
$pagination->limit = 10;
$pagination->param = $_GET['page'];
$pagination->mPage = "index.php";
$pagination->query = "select * from tbl_products where pVisible = 'yes'";
while($row = mysql_fetch_assoc($pagination->printData)) {
print $row['pName'];
}
?>
</table>
<br/><br/>
<?php $pagination->show(); ?>
</body>
</html>
变量$pagination->printData在show函数中设置,但您是在while循环后调用该函数的,因此在while循环中使用$pagination->printData时,还没有查询结果。哦,否则我怎么做呢$this->qData=$this->query。限制$start,$LIMIT$this->printData=$this->db->query$this->qData;我希望能够将$pagination->getData之类的内容写入while循环,这样我只需编写一次查询,类就可以处理分页和显示数据。在我看来,while循环需要在show函数中。