2012-09-17 7 views
6

Ok Mam powyższy błąd na mojej stronie, używam PHP 5.3 po raz pierwszy i użyłem tego kodu wcześniej, ale nigdy nie miałem tego powiadomienia, więc miałem nadzieję na jakieś wskazówki. Przyjrzałem się niektórym pytaniom, ale kiedy próbuję zastosować to rozwiązanie do mojego kawałka kodu, wydaje się, że nie działa.Niezdefiniowany indeks: strona w

Ten kod jest skryptem paginacji PHP z mashupu papierowego, więc jeśli uda mi się znaleźć odpowiedź, może pomóc każdemu, kto również używa tego kodu i doświadcza tego samego problemu.

kawałek kodu, który jest generującego zawiadomienie jest -

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

Z tego co czytałem to zasugerowano, aby dodać isset i tak zmienili kod, aby wyglądać jak robi poniżej, jednak ja wciąż dostać ten sam błąd.

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

Każda rada byłaby doceniona.

Dzięki

Stan

+0

Należy zakładać błąd/zawiadomienia otrzymujesz od PHP dla nas, aby mieć większe szanse na rozwiązując twój problem. – Nelson

+0

Cześć Nelson dzięki za poradę, to jest pełna Uwaga: Niezdefiniowany indeks: strona w C: \ wamp \ www \ jobboard_plugin \ jobs \ jobboard.php on line 56 – user1678816

Odpowiedz

3

„Wskaźnik niezdefiniowana” błąd jest po prostu informacją, że starał się coś z tablicy przy użyciu indeks, dla którego nie ma pasującego elementu.

W tym przypadku problem leży w linii powyżej wywołania isset(). Indeks 'page' nie jest zdefiniowany w twojej macierzy $_GET. Więc trzeba najpierw sprawdzić, czy ustawiony jest $_GET['page']:

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

Dziękuję, że ma sens, – user1678816

0

Błąd znajduje się na pierwszej linii zrobić

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

Pracowałem idealnie, dziękuję Podświetlę jako odpowiedź w 4 min. – user1678816

+0

Witam, mam trochę głowy, że wyglądało to świetnie, ale paginacja nie działała, chociaż usunęła powiadomienie. – user1678816

0

W kodzie sprawdzić pogoda strona nie jest ustawiona, a następnie użyć strony, powodując tym samym czasie. Po prostu zdalne wykrzyknik. Spróbuj tego:

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

Cześć Dzięki, dodałem Twój kawałek kodu, a następnie zachowałem to samo powiadomienie, ale również zwróciłem następujące informacje: Ostrzeżenie: mysql_fetch_array() oczekuje, że parametr 1 będzie zasobem, boolean podany w C: \ wamp \ www \ jobboard_plugin \ jobs \ jobboard.php on line 172 – user1678816

+0

Który dotyczy tego fragmentu kodu: while ($ row = mysql_fetch_array ($ result)) – user1678816

+0

To brzmi jak inny fragment kodu. Możesz umieścić, jeśli jesteś w pobliżu: if ($ result) –

0

Chociaż nie widzę go w kodzie, byłbym skłonny się założyć, że masz pustą zmienną $_GET['page'] w kodzie. Kiedy wykonujesz podział na strony, musisz nadal dołączać zmienną do znaczników zakotwiczenia, jeśli używasz stylu linku <a href="somePage.php?page=4.

Sprawdź swoje linki, aby upewnić się, że zachować przekazywanie go z powrotem przez cały czas.

Komunikat o błędzie undefined index pojawia się przy próbie dostępu do elementu tablicy, który nie istnieje - w tym przypadku prawie na pewno jest to tablica $_GET.

-1

Należy zrobić to w ten sposób

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

Undefined index: page odnosi się do jakiegoś konkretnego array błędu. W kodzie tablica o wartości index o wartości page to $_GET, więc powinna to być pierwsza linia kodu, która wymaga pewnej ochrony.

+0

Według twojego kodu; jeśli $ _GET ['page'] nie jest ustawiona, neighter będzie $ start być. Prawdopodobnie powoduje problemy na drodze. –

+0

To nie jest problem z plakatem. Odwołuje się do błędu nieokreślonego indeksu i tutaj jest odpowiedź na to pytanie. Jeśli $ start jest twoim zmartwieniem, to prawdopodobnie chcesz się martwić o jego cały projekt :) – Deepak

+0

Ta konkretna, jeśli jeszcze konstrukcja sprawi, że $ start zostanie ustawiony. Twój kod łamie tę konwencję. Jeśli naprawdę chcemy się upewnić, że powiadomienie nie zostanie wyświetlone, powinniśmy doradzić mu, aby umieścił wyjście lub umrzeć() na górze swojej strony;) ​​ –

0

Mam problem .. to najlepsze i najkrótsze rozwiązanie, jakie mam ..

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

lub

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

nadzieję, że pomoże

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

Powinieneś wyjaśnić w tekście, co naprawiłeś, w przeciwnym razie twoja odpowiedź może zostać usunięta. . –