如何在$ _GET上修复未定义的索引?

时间:2014-01-12 21:52:02

标签: php get http-headers isset

我无法理解如何修复此通知。它为$_GET[' ']提供了一个未定义的索引,我无法设置isset(),因为它会制造查询和代码。

class.php

private $perPage = 8;
private $startPage = 0; 

public function latestArticles()
{
    if($_GET['page'] <= 1) NOTICE ERROR <-- is here on the $_GET['page'];
        $this->startPage = 0;
    else
        $this->startPage = $_GET['page'] * $this->perPage - $this->perPage;

    $this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
    $sth = $this->db->prepare("SELECT * FROM articles ORDER BY id DESC LIMIT ?, ?");
    $sth->execute(array($this->startPage, $this->perPage));

    $data = $sth->fetchAll();
    return $data;
}

此代码在单击按钮时设置标题(下一个或上一个按钮)。如果你第一次加载页面,它没有像ex:www.site.com/那样加载的标题,所以它给出了错误,因为没有设置$_GET['page'],但我无法解决这个问题..这里是我如何打印函数检索的数据。

index.php

<?php
    if(!isset($_GET['page']))
        $page = 1;
    else 
        $page = $_GET['page'];

    foreach($latestArticles as $article)
    {
        $title = $article['title'];

        echo ''.$title.'';
    }

    $prev = $page-1;
    $next = $page+1;

    echo "
    <a class='nxt_prevButton' href='?page=$prev'>previous page</a>
    <a class='nxt_prevButton' href='?page=$next'>next page</a>
    ";
?>

尝试失败

我设置了isset()empty(),但它不允许代码工作,这是下一个和上一个按钮,可获得更多结果,每页8个结果。 (通知消失但代码(查询)停止工作)。

通过修复代码,有什么方法可以解决这个问题?没有使用 error_reporting(0);

1 个答案:

答案 0 :(得分:2)

你肯定需要使用isset,这只是制定逻辑的问题。

我想,如果我理解这一点,你可以这样做:

if(!isset($_GET['page']) || $_GET['page'] <= 1)
    $this->startPage = 0;
else
    $this->startPage = $_GET['page'] * $this->perPage - $this->perPage;

因此,如果未设置$_GET['page']startPage将为0。