dave: Proble: "Notice: Undefined index"

Beitrag lesen

Hi,

<?php
switch ($_GET['p']) {
   case 'test' : $inhalt = array('content/test.php', 'Test');
     break;

default : $inhalt = array('content/leer.php', 'Startseite');
  }
?>

  
Wenn an die Seite kein Paramter "p" übergeben wird ist $\_GET['p'] selbstverständlich undefined.  
Du musst also prüfen ob $\_GET['p'] gesetzt ist (mit isset()), und falls nicht in diesem Fall wohl am einfachsten einen Defaultwert zuweisen.  
~~~php
  
<?php  
// Wenn URL-Paremter "p" nicht gesetzt ist Default-Wert setzen.  
if(!isset($_GET['p']){  
   $_GET['p'] = '';  
}  
switch ($_GET['p']) {  
   case 'test' : $inhalt = array('content/test.php', 'Test');  
     break;  
  
   default : $inhalt = array('content/leer.php', 'Startseite');  
  }  
?>

Oder kürzer mit dem ternären Operator:

  
<?php  
switch (isset($_GET['p']) ? $_GET['p'] : '') {  
   case 'test' : $inhalt = array('content/test.php', 'Test');  
     break;  
  
   default : $inhalt = array('content/leer.php', 'Startseite');  
  }  
?>

Oder, Möglichkeit 3, falls default ausgeführt werden soll falls $_GET['p'] nicht gesetzt ist so:

  
<?php  
// Wenn URL-Paremter "p" gesetzt ist entsprechend des Wertes Inhalt setzen.  
if(isset($_GET['p']){  
   switch ($_GET['p']) {  
      case 'test' : $inhalt = array('content/test.php', 'Test');  
        break;  
  
      // "Seite nicht gefunden"-Seite  
      default : $inhalt = array('content/404.php', '404');  
   }  
}else{  
   // Falls Kein URL-Parameter "p" gesetzt ist die Startseite anzeigen.  
   $inhalt = array('content/leer.php', 'Startseite');  
}  
?>

<?php
if (isset($_GET['p'])) $p = $_GET['p'];
switch ($p) {
   case 'test' : $inhalt = array('content/test.php', 'Test');
     break;

default : $inhalt = array('content/leer.php', 'Startseite');
  }
?>


>   
> so nun bekommt ich aber folgende Fehlermeldung:  
> Notice: Undefined variable: p in G:\xampp\htdocs\templer\content.php on line 4  
  
$p wird ja auch nur gesetzt falls $\_GET['p'] gesetzt ist.  
Gleiches Problem wie oben, nur jetzt eben mit $p.  
Umkopieren von Variablen ist prinzipiell übrigens unnötig.  
  
~dave