Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
小问题PHP分页数学帮助_Php_Mysql_Pagination - Fatal编程技术网

小问题PHP分页数学帮助

小问题PHP分页数学帮助,php,mysql,pagination,Php,Mysql,Pagination,我的PHP分页有一个小问题,我有6条记录,每次显示2条,当我单击next时,它会显示2到4条记录,这很好,但如果要显示4到6条记录,则不起作用。我不确定我做错了什么。有人有什么想法吗?问题在于要显示的下一条记录的计算 <?php $per_page = 2; $start = $_GET['start']; $query = mysql_query("SELECT * FROM Directory"); $record_count = mysql_num_rows($query); $re

我的PHP分页有一个小问题,我有6条记录,每次显示2条,当我单击next时,它会显示2到4条记录,这很好,但如果要显示4到6条记录,则不起作用。我不确定我做错了什么。有人有什么想法吗?问题在于要显示的下一条记录的计算

<?php
$per_page = 2;
$start = $_GET['start'];
$query = mysql_query("SELECT * FROM Directory");
$record_count = mysql_num_rows($query);
$record_count = round($record_count / $per_page);

if(!$start) {
    $start = 0;
}

$query = mysql_query("SELECT * FROM Directory LIMIT $start,$per_page") or     die(mysql_error());
$row = mysql_num_rows($query);
// Output Records here

// Setup next and previous button variables
$prev = $start - $per_page;
$next = $start + $per_page;

echo '<p> <h4>';
if($prev < 0) {
    echo 'Previous';
} else {
    echo '<a href="directory.php?start='.$prev.'>Previous</a>';
}

echo ' ' . $start . ' of ' . $record_count;

if($next < $record_count) {
    echo ' <a href="directory.php?start='.$next.'>Next</a>';
} else {
    echo ' Next';
}
echo '</h4> </p>';
?>

看起来这是一个格式问题。当我查看您的URL来源时,我看到:


之前的第1页(共4页)

您似乎在href属性中缺少一个引号

在代码中,您需要:

echo '<a href="directory.php?start='.$prev.'">Previous</a>';
echo';

echo';

使用此代码计算:

$num = 10; // number of items on page
$p = $_GET['page']; // the var that comes from url (for ex: htttp://..../xxx.php?page=3)
$r = mysql_query(" select * from your_table ");

$posts=mysql_num_rows($r); // total posts
$total=(($posts-1)/$num)+1; // toatal pages
$total=intval($total);
$p=intval($p);
if(empty($p) or $p<0 or !isset($p)) $p=1;
if($p>$total) $p=$total;
$start=$p*$num-$num;

// here print the html for pagination (for ex: htttp://...../xxx.php?page=1 .. 2 ...3 .... and so on ...) you can make a for() here

$r = mysql_query(" select * from your_table limit ".$start.", ".$num);
while (....) {
.....
}
$num=10;//第页上的项目数
$p=$_GET['page'];//来自url的变量(例如:htttp://..../xxx.php?page=3)
$r=mysql_查询(“从您的_表中选择*);
$posts=mysql_num_rows($r);//员额总数
$total=($posts-1)/$num)+1;//总页数
$total=intval($total);
$p=intval($p);
如果(空($p)或$p$total)$p=$total;
$start=$p*$num-$num;
//此处打印用于分页的html(例如:htttp://...../xxx.php?page=1 …2…3…等等…)你可以在这里做一个for()
$r=mysql_查询(“从_表限制中选择*。$start.”,“$num”);
而(……){
.....
}

由于我的解释能力不太好,您可以测试发生了什么,当您执行第4-6行时会发生什么?导航到的URL是什么?当我执行第4-6行时,它不允许我转到下一个也是最后一个URL集records@Gebbo,如果问题已解决,则向上投票并接受答案。$start应该是
$start=intval($\u GET['start'])
和$record\u count应该来自目录中的
SELECT count(*)
querytanks,我也将Next按钮编码稍微更改为if($Next是我想说的,但是如果我将要显示的记录数更改为6中的3,那么Next按钮不会出现,我将尝试if($Next-1<$record\u count){将下一个代码更新为,如果(!($start>=$record_count-$page_per)){echo';}或者{echo'next';},那么它现在可以在一定程度上工作
echo ' <a href="directory.php?start='.$next.'">Next</a>';
$num = 10; // number of items on page
$p = $_GET['page']; // the var that comes from url (for ex: htttp://..../xxx.php?page=3)
$r = mysql_query(" select * from your_table ");

$posts=mysql_num_rows($r); // total posts
$total=(($posts-1)/$num)+1; // toatal pages
$total=intval($total);
$p=intval($p);
if(empty($p) or $p<0 or !isset($p)) $p=1;
if($p>$total) $p=$total;
$start=$p*$num-$num;

// here print the html for pagination (for ex: htttp://...../xxx.php?page=1 .. 2 ...3 .... and so on ...) you can make a for() here

$r = mysql_query(" select * from your_table limit ".$start.", ".$num);
while (....) {
.....
}