未定义的索引:页面

时间:2012-09-17 23:05:35

标签: php pagination php-5.3

好的我在我的页面上有上述错误,我第一次使用PHP 5.3,并且之前使用过此代码但从未收到过此通知,所以我希望得到一些指导。我已经看了一些问题但是当我尝试将解决方案应用到我的代码时它似乎不起作用。

此代码是来自纸质混搭的PHP分页脚本,因此如果我能找到答案,它可能会帮助其他使用此代码并遇到相同问题的人。

生成通知的代码是 -

$page = mysql_escape_string($_GET['page']);
if($page){
    $start = ($page - 1) * $limit; 
}else{
    $start = 0; 
    }   

根据我的阅读,建议添加isset,因此将代码更改为下面的内容,但是我仍然会遇到相同的错误。

$page = mysql_real_escape_string($_GET['page']);
 if(!isset($page)){
    $start = ($page - 1) * $limit; 
}else{
    $start = 0; 
    }   

任何建议都将受到赞赏。

由于

斯坦

7 个答案:

答案 0 :(得分:3)

“未定义的索引”错误基本上告诉您,您尝试使用没有匹配元素的索引从数组中获取内容。

在这种情况下,问题出在isset()电话上方的行中。您的'page'数组中未定义索引$_GET。因此,您需要先检查是否设置了$_GET['page']

if (isset($_GET['page'])) {
  $page = mysql_real_escape_string($_GET['page']);
  // do more stuff
}

答案 1 :(得分:0)

错误在您的第一行 做

$page = isset($_GET['page']) ? mysql_real_escape_string($_GET['page']) : 0;

答案 2 :(得分:0)

在您的代码中,检查页面是否未设置,然后使用该页面,从而产生相同的通知。只需远程感叹号即可。试试这个:

$page = mysql_real_escape_string($_GET['page']);
 if(isset($page)){
    $start = ($page - 1) * $limit; 
}else{
    $start = 0; 
}

答案 3 :(得分:0)

虽然我在你的代码中看不到它,但我愿意打赌你的代码中有一个空变量$_GET['page']。当您进行分页时,如果使用<a href="somePage.php?page=4样式的链接,则需要继续将变量附加到锚标记。

检查您的链接,确保保持一直将其传回。

当您尝试访问不存在的数组元素时,会出现错误消息undefined index - 在这种情况下,它几乎肯定是$_GET数组。

答案 4 :(得分:0)

我遇到了一些问题..这是我得到的最好和最短的解决方案..

$page = (isset($_GET["page"]) ? $_GET["page"]:$config["per_page"] ='');

$page = (isset($_GET['page'])) ? $_GET['page'] : 0;

答案 5 :(得分:0)

希望这会有所帮助

<?php
# default page
$default = 'home.php';

# set document root path
$base = $_SERVER['DOCUMENT_ROOT'].'/redirect/';

# list of all site pages + the id they will be called by
$pages = array('home' => 'home.php','about' => 'about.php','contact' => 'contact.php');
if (isset($_GET['page'])) {
  $page = mysql_real_escape_string($_GET['page']);
if(array_key_exists($_GET['page'], $pages))
{
foreach($pages as $pageid => $pagename) {
if($_GET['page'] == $pageid && file_exists($base.$pagename))
{
          /* if somebody's making a request for ?page=xxx and
          the page exists in the $pages array, we display it
          checking first it also exists as a page on the server */
          include $base.$pagename;
      }
   } // end foreach
}
else {
          /* if the page isn't listed in $pages, or there's no ?page=xxx request
          we show the default page, again we'll also just make sure it exists as a file
          on the server */
          if(file_exists($base.$default)) include $base.$default;
 }
} else {
    header ("Location: index.php?page=home");
}


?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My Website</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<body>
<div style="height:50px;border:1px solid #000;margin-bottom:10px">

</div>

<div style="float:left;width:15%;border:1px solid #000">
 <ul style="margin-left:10px;list-style-type:none">
     <li><a href="index.php?page=home">Home</a></li>
     <li><a href="index.php?page=about">About</a></li>
     <li><a href="index.php?page=contact">Contact</a></li>
 </ul>
</div>

<div style="float:right;width:80%;border:1px solid #000">
     <div style="padding:4px">
     <!-- content here -->
     </div>
</div>
</body>
</html>

答案 6 :(得分:-1)

你应该这样做

if(isset($_GET['page']){  
  $page = mysql_real_escape_string($_GET['page']);  
  if(!isset($page)){  
     $start = ($page - 1) * $limit;   
  }else{  
    $start = 0; 
  }   
}

Undefined index: page指的是某些array特定错误。在您的代码中,index值为page的数组为$_GET,因此它应该是代码的第一行,需要一些保护。