【问题标题】:How to create a "Next Page" link to the "non-displayed" results of mySQL search?如何创建指向 mySQL 搜索“未显示”结果的“下一页”链接?
【发布时间】:2013-05-07 02:48:36
【问题描述】:

我的网页上有一个搜索引擎 (PHP)。到目前为止,它将在同一结果页面上显示所有结果。我想将结果数限制为每页 20 个,并创建一个“下一页”链接...

如果我这样做SELECT TOP 20 * FROM ... WHERE ... 它只会显示前 20 个结果...

如何创建<a href="...">NextPage</a> 导致结果 21 到 40? 我必须使用 AJAX 吗?

【问题讨论】:

  • 这称为分页。我不知道你是怎么做到的,但希望这个术语能给你一些别的东西来帮助你找出答案。
  • @Michael N 谢谢。我去谷歌看看

标签: php mysql ajax pagination


【解决方案1】:

您使用的前端技术是什么? Java、.NET、PHP 等?

您尝试实现的分页是在大多数最新的网络框架中内置的。不需要自己手动实现分页逻辑。

即使出于某种原因需要手动执行,您也可以执行 -

SELECT * FROM TABLE1 WHERE .... LIMIT FROM, TO。 每页将 FROMTO 增加 20。

【讨论】:

    【解决方案2】:

    如果您正在寻找分页。这个http://www.phpeasystep.com/phptu/29.html 可能会对你有所帮助。

    【讨论】:

      【解决方案3】:
      <?php<br>
      // database connection info<br>
      $conn = mysql_connect('localhost','dbusername','dbpass') or trigger_error("SQL", E_USER_ERROR);<br>
      $db = mysql_select_db('dbname',$conn) or trigger_error("SQL", E_USER_ERROR);<br>
      
      // find out how many rows are in the table <br>
      $sql = "SELECT COUNT(*) FROM numbers";<br>
      $result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);<br>
      $r = mysql_fetch_row($result);<br>
      $numrows = $r[0];<br>
      
      // number of rows to show per page<br>
      $rowsperpage = 10;<br>
      // find out total pages
      $totalpages = ceil($numrows / $rowsperpage);<br>
      
      // get the current page or set a default<br>
      if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) {<br>
         // cast var as int<br>
         $currentpage = (int) $_GET['currentpage'];<br>
      } else {<br>
         // default page num<br>
         $currentpage = 1;<br>
      } // end if<br>
      
      // if current page is greater than total pages...<br>
      if ($currentpage > $totalpages) {<br>
         // set current page to last page<br>
         $currentpage = $totalpages;<br>
      } // end if<br>
      // if current page is less than first page...<br>
      if ($currentpage < 1) {<br>
         // set current page to first page<br>
         $currentpage = 1;<br>
      } // end if<br>
      
      // the offset of the list, based on current page <br>
      $offset = ($currentpage - 1) * $rowsperpage;<br>
      
      // get the info from the db <br>
      $sql = "SELECT id, number FROM numbers LIMIT $offset, $rowsperpage";<br>
      $result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);<br>
      
      // while there are rows to be fetched...<br>
      while ($list = mysql_fetch_assoc($result)) {<br>
         // echo data<br>
         echo $list['id'] . " : " . $list['number'] . "<br />";<br>
      } // end while
      
      /******  build the pagination links ******/<br>
      // range of num links to show<br>
      $range = 3;<br>
      
      // if not on page 1, don't show back links<br>
      if ($currentpage > 1) {<br>
         // show << link to go back to page 1<br>
         echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1'><<</a> ";<br>
         // get previous page num<br>
         $prevpage = $currentpage - 1;<br>
         // show < link to go back to 1 page<br>
         echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage'><</a> ";<br>
      } // end if <br>
      
      // loop to show links to range of pages around current page<br>
      for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {<br>
         // if it's a valid page number...<br>
         if (($x > 0) && ($x <= $totalpages)) {<br>
            // if we're on current page...<br>
            if ($x == $currentpage) {<br>
               // 'highlight' it but don't make a link<br>
               echo " [<b>$x</b>] ";<br>
            // if not current page...<br>
            } else {<br>
               // make it a link<br>
               echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x'>$x</a> ";<br>
            } // end else<br>
         } // end if <br>
      } // end for<br>
      
      // if not on last page, show forward and last page links   <br>     
      if ($currentpage != $totalpages) {<br>
         // get next page<br>
         $nextpage = $currentpage + 1;<br>
          // echo forward link for next page <br>
         echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextpage'>></a> ";<br>
         // echo forward link for lastpage
         echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$totalpages'>>></a> ";<br>
      } // end if<br>
      /****** end build pagination links ******/<br>
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-03
        • 2017-03-27
        • 1970-01-01
        • 2016-05-14
        • 1970-01-01
        • 2017-08-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多