0

一点信息

我目前正在做一个项目,我可以在其中将我的工作显示为项目。

在我的数据库中,我已经设置了它,所以里面的数字list告诉 PHP 它应该在哪里 - 根据 MYSQL 查询。

在我的项目页面中,我创建了分页,因此如果超过 5 行,则会将一个新的项目列表页面添加到分页中。

(我的前后分页是通过链接的图像完成的)

我使用 Jquery Ajax POST 来调用新页面。

问题:

我曾经将我的 PHP 查询设置为按name(项目名称)排序,但我创建了一个新列list,以便我可以按自定义顺序显示它们 - 根据中的数字list

但是自从我将其从更改namelist- 该页面仅显示 5 条记录并且不再为我提供分页选项(何时应该)

我知道问题与分页中的 2 个查询有关 - 谁能告诉我如何解决这个问题。

我试过让listChar、Varchar 和 INT 列都没有帮助!:(

编码:

PHP分页:

    <?
$get_stuff = mysql_query("SELECT * FROM `projects` WHERE `cat`='$arrc' ORDER BY `list` ASC")or die(mysql_error());
$getid = mysql_num_rows($get_stuff);
$r = mysql_fetch_row($get_stuff);
$numrows = $r[0];
// number of rows to show per page
$rowsperpage = 5;
// find out total pages
$totalpages = ceil($numrows / $rowsperpage);

// get the current page or set a default
if (isset($_POST['pid']) && is_numeric($_POST['pid'])) {
   // cast var as int
   $currentpage = (int) $_POST['pid'];
} else {
   // default page num
   $currentpage = 1;
} // end if

// if current page is greater than total pages...
if ($currentpage > $totalpages) {
   // set current page to last page
   $currentpage = $totalpages;
} // end if
// if current page is less than first page...
if ($currentpage < 1) {
   // set current page to first page
   $currentpage = 1;
} // end if

// the offset of the list, based on current page 
$offset = ($currentpage - 1) * $rowsperpage;
// get the info from the db 
$get_stuff2 = mysql_query("SELECT * FROM `projects` WHERE `cat`='$arrc' ORDER BY `list` ASC LIMIT $offset, $rowsperpage")or die(mysql_error());
while($projectz = mysql_fetch_array($get_stuff2)){
?>
<ul class="projex">
<li onClick="project('project','<? echo $projectz['id']; ?>','1','<? echo $currentpage; ?>')" class="onclick"> <? echo $projectz['name']; ?>
</ul>
<?
}
?>

我没有添加我的链接代码,因为我知道这不是问题。

4

1 回答 1

1

您的问题似乎在这里:

<?
$get_stuff = mysql_query("SELECT * FROM `projects` WHERE `cat`='$arrc' ORDER BY `list` ASC")or die(mysql_error());
$getid = mysql_num_rows($get_stuff);
$r = mysql_fetch_row($get_stuff);
$numrows = $r[0];

您将行数放入$getid,然后忽略该变量并将结果集中返回的第一个列放入$numrows并使用它。这意味着所有的分页计算都是基于返回的第一列而不是行数。我猜想按name第一列排序时为 7,而按list第一列排序时为 5 或更少。

我建议的解决方法是获取COUNTSQL 查询中的行数,除非您的示例中没有显示迫切需要$getid

<?php
$get_stuff = mysql_query("SELECT COUNT(*) FROM `projects` WHERE `cat`='$arrc'")or die(mysql_error());
$r = mysql_fetch_row($get_stuff);
$numrows = $r[0];
于 2012-08-07T02:45:47.080 回答