固定分页脚本中未定义的变量$ page

时间:2011-05-09 21:36:20

标签: php

我从“Stranger Studios网页设计”中获得了这个页面我遇到了page = $ _GET ['page']的问题; 错误是页面未定义的变量页面 ,我不知道“页面”来自哪里?请帮忙吗?

<?php
//php code for making pagination in  the gallery page
    /*
        Place code to connect to your DB here.
    */
    // code to connect to DB.

//    $page = $_REQUEST['page'];
    $connection = @mysql_connect(localhost, 'root', '');
    if (!$connection){
    echo 'not connect';
    }
    mysql_select_db('bena'); // select db

    $tbl_name="gallery";        //your table name
    // How many adjacent pages should be shown on each side?
    $adjacents = 3;

    /*
       First get total number of rows in data table.
       If you have a WHERE clause in your query, make sure you mirror it here.
    */
    $query = "SELECT COUNT(*) as num FROM $tbl_name";
    $total_pages = mysql_fetch_array(mysql_query($query));
    $total_pages = $total_pages['num'];

    /* Setup vars for query. */
    $targetpage = "galleryContent.php";     //your file name  (the name of this file)
    $limit = 3;                                 //how many items to show per page
    $page = $_GET['page'];

    if((!$page) || (is_numeric($page) == false) || ($page < 0) || ($page > $total_items)) {
          $page = 1; //default

 }


if(isset($_REQUEST['page']))
    $page = $_REQUEST['page'];
else
    $page = 1;
 // if

    if($page)
    {   $start = ($page - 1) * $limit;  }       //first item to display on this page
    else
    {   $start = 0; }                           //if no page var is given, set start to 0

    /* Get data. */
    $sql = "SELECT name FROM $tbl_name LIMIT $start, $limit";
    $result = mysql_query($sql);

    /* Setup page vars for display. */
    if ($page == 0) $page = 1;                  //if no page var is given, default to 1.
    $prev = $page - 1;                          //previous page is page - 1
    $next = $page + 1;                          //next page is page + 1
    $lastpage = ceil($total_pages/$limit);      //lastpage is = total pages / items per page, rounded up.
    $lpm1 = $lastpage - 1;                      //last page minus 1

    /*
        Now we apply our rules and draw the pagination object.
        We are actually saving the code to a variable in case we want to draw it more than once.
    */
    $pagination = "";
    if($lastpage > 1)
    {
        $pagination .= "<div class=\"pagination\">";
        //previous button
        if ($page > 1)
            $pagination.= "<a href=\"$targetpage?page=$prev\">« previous</a>";
        else
            $pagination.= "<span class=\"disabled\">« previous</span>";

        //pages
        if ($lastpage < 7 + ($adjacents * 2))   //not enough pages to bother breaking it up
        {
            for ($counter = 1; $counter <= $lastpage; $counter++)
            {
                if ($counter == $page)
                    $pagination.= "<span class=\"current\">$counter</span>";
                else
                    $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
            }
        }
        elseif($lastpage > 5 + ($adjacents * 2))    //enough pages to hide some
        {
            //close to beginning; only hide later pages
            if($page < 1 + ($adjacents * 2))
            {
                for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<span class=\"current\">$counter</span>";
                    else
                        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
                }
                $pagination.= "...";
                $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
                $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
            }
            //in middle; hide some front and some back
            elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
            {
                $pagination.= "<a href=\"$targetpage?page=1\">1</a>";
                $pagination.= "<a href=\"$targetpage?page=2\">2</a>";
                $pagination.= "...";
                for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<span class=\"current\">$counter</span>";
                    else
                        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
                }
                $pagination.= "...";
                $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
                $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
            }
            //close to end; only hide early pages
            else
            {
                $pagination.= "<a href=\"$targetpage?page=1\">1</a>";
                $pagination.= "<a href=\"$targetpage?page=2\">2</a>";
                $pagination.= "...";
                for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<span class=\"current\">$counter</span>";
                    else
                        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
                }
            }
        }

        //next button
        if ($page < $counter - 1)
            $pagination.= "<a href=\"$targetpage?page=$next\">next »</a>";
        else
            $pagination.= "<span class=\"disabled\">next »</span>";
        $pagination.= "</div>\n";
    }
?>
    <?php
        while($row = mysql_fetch_array($result))
        {

        // Your while loop here
        echo '<table><tr><td><img src='.$row["name"].'/></td></tr>';
        //echo '<tr><td>'.$row["image"].'</td></tr>';
        echo '</table>';
        }
    ?>
<?php=$pagination?>

2 个答案:

答案 0 :(得分:3)

$_GET包含您传递给网址的参数及其值。因此,期望您的网址如下所示:

http://yoursitename.com/galleryContent.php?page=1

或类似。

如果没有设置页面,那么看看他们正在设置默认的代码,这样你就可以改变$ page = $ _GET ['page'];以下是为了阻止错误 -

$page = false;
if (array_key_exists('page', $_GET))
{
    $page = $_GET['page'];
}

如果您没有在URL上传递页面,但您将始终使用默认页面1。

答案 1 :(得分:1)

$page = $_GET['page'];

来自您的网址。 IE:http://www.yoursite.com/index.php?page=1 那么$ page变量将包含1。