PHP-分页选择正确的页数,但不会';不要把行分开

PHP-分页选择正确的页数,但不会';不要把行分开,php,mysql,pagination,Php,Mysql,Pagination,下面的代码是分页的尝试。这不太管用。我正在玩一个有49行的结果。如果我使用$rowsperpage=10,下面的代码将正确地具有指向底部4页的超链接。但是,它仍然在第一页上显示所有49行,单击后续页面返回空白页面 所以我的问题是:如何让下面的代码在第1页之后的页面中正确地划分和分配行 提前感谢, 约翰 <? //This is only displayed if they have submitted the form if ($searching =="yes")

下面的代码是分页的尝试。这不太管用。我正在玩一个有49行的结果。如果我使用
$rowsperpage=10,下面的代码将正确地具有指向底部4页的超链接。但是,它仍然在第一页上显示所有49行,单击后续页面返回空白页面

所以我的问题是:如何让下面的代码在第1页之后的页面中正确地划分和分配行

提前感谢,

约翰

<?
    //This is only displayed if they have submitted the form
    if ($searching =="yes")
    {

        //If they did not enter a search term we give them an error
        if ($find == "")
        {
            session_write_close();
            header("Location:http://www.example.com/index.php");
            exit;
            unset($_SESSION['find']);   

        }

        // Otherwise we connect to our Database
        mysql_connect("mysqlv10", "username", "password") or die(mysql_error());
        mysql_select_db("database") or die(mysql_error());

        // We preform a bit of filtering

        $find = strip_tags($find);
        $find = trim ($find);
        $find = strtolower($find);
        $find = mysql_real_escape_string($find);

        $result=mysql_query("SHOW TABLES FROM database LIKE '$find'")
        or die(mysql_error());

        $_GET['result'] = $result;

        if(mysql_num_rows($result)>0){
            while($table=mysql_fetch_row($result)){

                $_GET[`$table[0]`] = $table;
                $_SESSION['table']= $table;

                $presult = mysql_query("SELECT COUNT(*) FROM `$table[0]`") or die(mysql_error());

                $rr = mysql_fetch_row($presult);  
                $numrows = $rr[0]; 
                $rowsperpage = 50; 
                $totalpages = ceil($numrows / $rowsperpage);

                // get the current page or set a default  
                if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) {  
                   // cast var as int  
                   $currentpage = (int) $_GET['currentpage'];  
                } 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; 

                print "<p class=\"topic\">$table[0]</p>\n";
                $r=mysql_query("SELECT * , votes_up - votes_down AS effective_vote FROM `$table[0]` ORDER BY effective_vote DESC");

                $_GET[`$r[0]`] = $r;

                print "<table class=\"navbar\">\n";
                while($row=mysql_fetch_array($r)){

                    $_GET[`$row[0]`] = $row;
                    $_SESSION['row']= $row;

                    $effective_vote = $row['votes_up'] - $row['votes_down']; 

                    print "<tr>";

                    print "<td class='sitename'>".'<a href="http://'.$row['site'].'" class="links2">'.$row['site'].'</a>'."</td>";
                    print "<td class='votes'>".'<span class="selection_count" id="selection_count'.$row['id'].'">'.number_format($effective_vote).'</span>'."</td>";
                    print "<td class='ballot'>".'<span class="button" id="button'.$row['id'].'">'.'<a href="javascript:;" class="cell1" id="'.$row['id'].'">'.Select.'</a>'.'</span>'."</td>";
                }
                print "</tr>\n";
            }
            print "</table>\n";

            $range = 3;  

            /******  build the pagination links ******/  
            // range of num links to show    

            // if not on page 1, don't show back links  
            if ($currentpage > 1) {  
               // show << link to go back to page 1  
               echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1&find={$_SESSION['find']}'><<</a> ";  
               // get previous page num  
               $prevpage = $currentpage - 1;  
               // show < link to go back to 1 page  
               echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage&find={$_SESSION['find']}'><</a> ";  
            } // end if   

            // loop to show links to range of pages around current page  
            for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {  
               // if it's a valid page number...  
               if (($x > 0) && ($x <= $totalpages)) {  
                  // if we're on current page...  
                  if ($x == $currentpage) {  
                     // 'highlight' it but don't make a link  
                     echo " [<b>$x</b>] ";  
                  // if not current page...  
                  } else {  
                     // make it a link  
                 echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x&find={$_SESSION['find']}'>$x</a> ";  
                  } // end else  
               } // end if   
            } // end for  

            // if not on last page, show forward and last page links      
            if ($currentpage != $totalpages) {   
               // get next page  
               $nextpage = $currentpage + 1;  
                // echo forward link for next page   
               echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextpage&find={$_SESSION['find']}'>></a> ";  
               // echo forward link for lastpage  
               echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$totalpages&find={$_SESSION['find']}'>>></a> ";  
            } // end if  
            /****** end build pagination links ******/

        }
        else{
            print "";
        }

        //This counts the number or results - and if there wasn't any it gives them a little message explaining that
        $anymatches=mysql_num_rows($result);
        if ($anymatches == 0)
        {

            $find = urlencode($find);

            session_write_close();
            header("Location:http://www.example.com/search2.php?find=$find");
            exit;

        }

    }
    ?> 

您必须使用limit从表中获取特定项目

select * form table limit 5, 10
这将从查询中的元素5开始,并返回接下来的10项

通常对于分页,您需要执行以下操作

select * from table limit (PAGE-1)*ITEMS_PER_PAGE, ITEMS_PER_PAGE

最主要的是在mysql查询中使用limit,我添加了“limit$offset,$rowsperpage”,现在第一页看起来很完美,行数正确。但是当我点击下面的页面时,它们是空白的。知道为什么吗?谢谢。我想我的问题是$find没有被传递到后续链接。但我不明白为什么。有什么想法吗?节省$find如果是在一个会话中设置的,你可以在所有链接中使用它,我已经这样做了。在页面链接URL的末尾,我有“?currentpage=$nextpage&find={$\u SESSION['find']}”,当我单击链接时,URL是正确的,但页面是空白的。但是,我在我的中使用,$find是空的。