簡體   English   中英

PHP分頁問題mysql和php在所有頁面上顯示相同的數據

[英]PHP Pagination issue mysql and php showing same data on all pages

我在用PHP從MySQL數據庫獲得的數據進行分頁時遇到問題。

我的代碼如下。 基本上發生的事情是它創建了適當數量的頁面,但是每頁顯示相同的數據,甚至每頁甚至不顯示5行。

我真的被卡住了。 這是我第一次嘗試分頁。 任何幫助將不勝感激。

        $pagenum = $_GET['pagenum'];

        if (!(isset($pagenum))) 
        { 
            $pagenum = 1; 
        }   else
            {
                $pagenum = $_GET['pagenum'];
            }

        //Count the number of results.
        $data = mysql_query("SELECT * FROM `articles` WHERE `content` = '' AND `requestedby` != '$id'") or die(mysql_error()); 
        $rows = mysql_num_rows($data);

        //Set the number of results to be displayed per page.
        $page_rows = 5;

        //This tells us the page number of our last page 
        $last = ceil($rows/$page_rows); 

         //this makes sure the page number isn't below one, or more than our maximum pages 
        if ($pagenum < 1) 
        { 
            $pagenum = 1; 
        }   elseif ($pagenum > $last) 
            { 
                $pagenum = $last; 
            }

        //This sets the range to display in our query 
        $max = 'LIMIT ' . ($pagenum - 1) * $page_rows .',' .$page_rows;

        //This is the query again, the same one... the only difference is we add $max into it.
        $data_p = mysql_query("SELECT * FROM `articles` WHERE `content` = '' AND `requestedby` != '$id' '$max'") or die(mysql_error());

        //Work out writers earnings based on prices.
        //100 Words - $1.25
        //300 Words - $2.50
        //500 Words - $4.00
        //700 Words - $5.50
        //1000 Words - $8.00
        $_100earnings = "0.65";
        $_300earnings = "1.25";
        $_500earnings = "2.50";
        $_700earnings = "3.00";
        $_1000earnings = "5.00";
    ?>
    <!-- main -->
    <div id="main">
    <center><h2>Write Articles</h2></center>
    <br />Available Projects:
    <table border="1">
        <tr>
            <td>Title:</td>
            <td>Length:</td>
            <td>Writers Earnings:</td>
        </tr>
        <?php
            //This is where you display your query results
            while($info = mysql_fetch_array($data_p))
            { 
                echo "<tr>";
                echo "<td>" . $info['keywords'] . "</td>";
                echo "<td>" . $info['length'] . "</td>";
                switch ($info['length'])
                {
                    case 100:
                        $writersearnings = $_100earnings;
                        break;
                    case 300:
                        $writersearnings = $_300earnings;
                        break;
                    case 500:
                        $writersearnings = $_500earnings;
                        break;
                    case 700:
                        $writersearnings = $_700earnings;
                        break;
                    case 1000:
                        $writersearnings = $_1000earnings;
                        break;
                }
                echo "<td>$" . $writersearnings . "</td>";
                //echo $info['Name']; 
                echo "</tr>";
            }

        ?>
    </table>
    <br /><br />
    <?php
        // This shows the user what page they are on, and the total number of pages
        echo " --Page $pagenum of $last-- <p>";


        // First we check if we are on page one. If we are then we don't need a link to the previous page or the first page so we do nothing. If we aren't then we generate links to the first page, and to the previous page.  
        if ($pagenum == 1) 
        {
        }   else 
            {
                 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";
                 echo " ";
                 $previous = $pagenum - 1;
                 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> ";   
            } 

        //just a spacer
        echo " ---- ";

        //This does the same as above, only checking if we are on the last page, and then generating the Next and Last links
        if ($pagenum == $last) 
        {

        }   else 
            {
                 $next = $pagenum + 1;

                 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";

                 echo " ";

                 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";
            }

使用此代碼,在查詢中刪除'$max附近”,當您添加'$max附近'時,查詢將變為select.... from.... where..... 'LIMIT.....' ,並且失敗查詢。

$data_p = mysql_query("SELECT * FROM `articles` WHERE `content` = '' AND `requestedby` != '$id' $max") or die(mysql_error());

您需要指定LIMIT在查詢LIMIT offset,count

$data_p = mysql_query("SELECT * FROM WHERE content = '' AND $data_p = mysql_query("SELECT * FROM != '$id' '$max'") or die(mysql_error());

刪除'$max''引號

$data_p = mysql_query("SELECT * FROM articles WHERE content= '' AND requestedby!= '".$id."' ".$max) or die(mysql_error());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM