2012-09-17 16 views
6

Ok ho l'errore sopra riportato sulla mia pagina, sto usando PHP 5.3 per la prima volta, e ho usato questo codice prima ma non ho mai avuto questo avviso, quindi speravo in qualche consiglio. Ho dato un'occhiata ad alcune domande ma quando provo ad applicare la soluzione al mio bit di codice non sembra funzionare.Indice indefinito: pagina in

Questo codice è uno script di impaginazione PHP da mashup di carta e quindi, se riesco a trovare la risposta, può aiutare chiunque stia utilizzando questo codice e abbia lo stesso problema.

il pezzo di codice che genera l'avviso è questo -

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

Da quello che ho letto è stato suggerito di aggiungere isset e così ha cambiato il codice a guardare come si fa sotto, ma ho ancora ottenere lo stesso errore.

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

Qualsiasi consiglio sarebbe apprezzato.

Grazie

Stan

+0

Si consiglia di inviare l'errore/che si ricevono da PHP notare per noi avere una migliore possibilità di risolvere il tuo problema. – Nelson

+0

Ciao Nelson grazie per il consiglio, questo è l'avviso completo: Indice non definito: pagina in C: \ wamp \ www \ jobboard_plugin \ jobs \ jobboard.php sulla linea 56 – user1678816

risposta

3

L' 'indice definito' errore è fondamentalmente ti dice che si è tentato di ottenere qualcosa da un array usando un indice per il quale non esiste alcun elemento corrispondente.

In questo caso, il problema si trova nella riga sopra la chiamata isset(). L'indice 'page' non è definito nell'array $_GET. Quindi è necessario controllare prima se $_GET['page'] è impostato:

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

Grazie che ha perfettamente senso, – user1678816

0

L'errore è sulla vostra prima linea fare

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

Funzionante Perfetto, grazie evidenzierò come risposta in 4 min. – user1678816

+0

Ciao, ho avuto un po 'di testa a me sembrava fantastico ma l'impaginazione non funzionava, anche se rimuoveva l'avviso. – user1678816

0

Nel codice si verificato se la pagina non è impostata, e quindi utilizzare nella pagina, con conseguente lo stesso avviso. Semplicemente remoto il punto esclamativo. Prova questo:

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

Ciao Grazie, ho aggiunto il tuo pezzo di codice e poi ha mantenuto lo stesso avviso ma ho anche restituito quanto segue: Attenzione: mysql_fetch_array() si aspetta che il parametro 1 sia risorsa, booleano dato in C: \ wamp \ www \ jobboard_plugin \ jobs \ jobboard.php sulla riga 172 – user1678816

+0

Che si riferisce a questo pezzo di codice: while ($ row = mysql_fetch_array ($ result)) – user1678816

+0

Sembra un pezzo di codice diverso. Potresti piazzare un se nel mentre come: if ($ result) –

0

Anche se non posso vederlo nel codice, sarei pronto a scommettere che si dispone di una variabile vuota $_GET['page'] nel codice. Quando si esegue un'impaginazione, è necessario continuare ad aggiungere la variabile ai tag di ancoraggio se si utilizza lo stile di collegamento <a href="somePage.php?page=4.

Controllare i collegamenti per assicurarsi che si mantenere passandolo indietro tutto il tempo.

Il messaggio di errore undefined index viene visualizzato quando si tenta di accedere a un elemento di matrice che non esiste e, in questo caso, è quasi certamente l'array $_GET.

-1

Si dovrebbe fare così

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

Undefined index: page si riferisce a qualche errore specifico array. Nel codice l'array con il valore indexpage è $_GET quindi dovrebbe essere la prima riga del codice che richiede una certa protezione.

+0

Secondo il tuo codice; se $ _GET ['page'] non è impostato, neighter sarà $ start. Probabilmente causando problemi lungo la strada. –

+0

Questo non è il problema del poster. Si riferisce all'errore dell'indice indefinito ed ecco la risposta per questo .. Se $ start è la tua preoccupazione allora probabilmente vuoi preoccuparti del suo intero progetto :) – Deepak

+0

Quella specifica costruzione if else assicura che $ start sia impostato. Il tuo codice rompe quella convenzione. Se vogliamo davvero assicurarci che l'avviso non venga mostrato, dovremmo consigliarlo di posizionare un'uscita o morire() in cima alla sua pagina;) –

0

ho qualche problema .. questa è la soluzione migliore e più corta che ho ...

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

o

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

Spero che questo vi aiuterà

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

Dovresti spiegare nel testo cosa hai risolto, altrimenti la tua risposta potrebbe essere cancellata. . –