2012-09-17 27 views
6

Ok Tengo el error anterior en mi página, estoy usando PHP 5.3 por primera vez, y he usado este código antes pero nunca tuve este aviso, así que esperaba alguna guía. He visto algunas preguntas, pero cuando trato de aplicar la solución a mi código, parece que no funciona.Índice indefinido: página en

Este código es un script de paginación de PHP a partir de mashup de papel, por lo que si puedo encontrar la respuesta puede ayudar a cualquier otra persona que también esté usando este código y experimente el mismo problema.

la pieza de código que está generando el aviso es esto -

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

De lo que he leído se sugirió añadir isset y así cambiar el código para que parezca que lo hace a continuación, sin embargo sigo teniendo el mismo error

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

Cualquier consejo sería apreciado.

Gracias

Stan

+0

que usted debe fijar el error/que están recibiendo desde PHP cuenta para nosotros tener una mejor oportunidad de resolviendo tu problema – Nelson

+0

Hola Nelson, gracias por el consejo, este es el aviso completo: índice indefinido: página en C: \ wamp \ www \ jobboard_plugin \ jobs \ jobboard.php en la línea 56 – user1678816

Respuesta

3

El 'índice indefinido' error es básicamente te dice que ha intentado conseguir algo de una matriz mediante un índice para el cual no hay un elemento coincidente.

En este caso, el problema está en la línea sobre su llamada isset(). El índice 'page' no está definido en su matriz $_GET. Así que hay que comprobar primero si se ha establecido $_GET['page']:

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

Gracias, tiene perfecto sentido, – user1678816

0

El error está en su primera línea hacer

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

Funcionó perfecto, gracias voy a resaltar como la respuesta en 4 min. – user1678816

+0

Hola, tengo un poco de cabeza, se veía genial, pero la paginación no funcionaba, aunque eliminó el aviso. – user1678816

0

En el código que hemos comprobado si la página no está establecido, y luego utilizar la página, lo que resulta en la misma notificación. Simplemente a distancia el signo de exclamación. Prueba esto:

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

Hola, agregué su parte de código y luego guardé el mismo aviso pero también devolví lo siguiente: Advertencia: mysql_fetch_array() espera que el parámetro 1 sea resource, boolean dado en C: \ wamp \ www \ jobboard_plugin \ jobs \ jobboard.php en la línea 172 – user1678816

+0

Que se relaciona con este fragmento de código: while ($ row = mysql_fetch_array ($ result)) – user1678816

+0

Eso suena como una pieza diferente de código. Puede colocar un si alrededor de su tiempo como: if ($ result) –

0

Aunque no puedo verlo en su código, yo estaría dispuesto a apostar que usted tiene una variable vacía $_GET['page'] en el código. Cuando realice una paginación, debe seguir añadiendo la variable a las etiquetas de anclaje si está utilizando el estilo de enlace <a href="somePage.php?page=4.

Revise sus enlaces para asegurarse de que mantenga haciéndolo retroceder todo el tiempo.

Aparece el mensaje de error undefined index cuando intenta acceder a un elemento de matriz que no existe, y en este caso, es casi seguro que es la matriz $_GET.

-1

Debe hacerlo de esta manera

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

Undefined index: page se refiere a algunos array error específico. En su código, la matriz con index valor page es $_GET por lo que debe ser la primera línea de su código que necesita cierta protección.

+0

Según su código; si $ _GET ['página'] no está configurado, más cerca estará $ start. Probablemente causando problemas en el camino. –

+0

Ese no es el problema del póster. Se refiere al error del índice indefinido y aquí está la respuesta para eso ... Si $ start es su preocupación, entonces probablemente quiera preocuparse por todo su proyecto :) – Deepak

+0

Esa construcción específica if else se asegurará de que se establezca $ start. Tu código rompe esa convención. Si realmente queremos asegurarnos de que el aviso no se muestre, debemos aconsejarle que coloque una salida o muera() en la parte superior de su página;) –

0

tengo algún problema ... esta es la mejor y más corta solución que tengo ..

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

o

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

la esperanza que esto ayudará

<?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> 
+1

Debe explicar en el texto lo que ha solucionado, de lo contrario, su respuesta puede eliminarse. . –