繁体   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