probleem met $_GET

Status
Niet open voor verdere reacties.

MieKatoen

Nieuwe gebruiker
Lid geworden
30 sep 2009
Berichten
3
Hallo iedereen,

Ik ben vrij nieuw in PHP en probeer nu mijn eerste echte projectje in mekaar te steken.
Ik loop echter tegen een probleem...

In index.php gebruik ik volgend stukje code

PHP:
<?php
  $page=$_GET['menu'];
  if((!file_exists("$page.php"))||($page=="")){$page="homepage";}
  include "$page.php";
?>
  <a href="index.php?menu=homepage">Home</a>
  <a href="index.php?menu=pagina01">Pagina01</a>
  <a href="index.php?menu=pagina02">Pagina02</a>
Het probleem is nu dat ik een foutmelding krijg als de pagina de eerste keer geladen wordt, dus als er geen '?menu=....' in de url staat.
Als de pagina geladen wordt door te klikken op een link in de pagina zelf (en waardoor bovenstaande voorwaarde dus wel vervult is), dan krijg ik geen foutmelding.

De foutmelding zelf luidt als volgt:
Notice: Undefined index: menu in C:\wamp\www\project1\index.php on line 2

Na de foutmelding laadt de pagina trouwens wel verder zoals het hoort. Ik kan de foutmelding onderdrukken door 'display errors' uit te zetten in de PHP-settings, maar dat vind ik niet echt netjes.

Ik hoop dat ik het proleem een beetje duidelijk omschreven heb, en vooral ook dat iemand mij kan vertellen wat ik er aan kan doen...
 
Ja, dat is vrij standaard.

Je vraagt om de waarde in de array $_GET waar de key 'menu' is. Maar als die key niet bestaat, wat moet de parser dan? Juist, een error werpen.

Je zult dus eerst moeten kijken of ie bestaat.

PHP:
$page=$_GET['menu'];

wordt

PHP:
$page = ( array_key_exists ( 'menu', $_GET ) ) ? $_GET['menu'] : '';

Als ie bestaat krijgt $page de waarde uit de url, anders blijft ie leeg.
 
Je kunt ook gewoon isset gebruiken natuurlijk ;)

PHP:
if ( isset ( $_GET['menu'] )  {
  $page = $_GET['menu'];
}
else {
  $page = 'homepage';
}
 
WOW... dat ging snel :thumb:
Beide oplossingen klinken mij best logisch in de oren. Ik ga het dadelijk eens proberen ;)
Heel erg bedankt voor de supersnelle reactie!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan