variablen includen

So, ich bin jetzt fertig mit der Site.

http://www.raumforschung.org dort ist sie zu bewundern :)

EIn Problem hab ich aber noch.

Wenn jemand http://www.raumforschung.org eintippt kommt er ja eigentlich zur index.php.
da ich aber in der config.php nicht angeben kann, was passiert wenn nichts eingegeben wird, kommt eine Fehlermeldung. Die error.php. In die hab ich nun mittlerweile den Willkommenstext hineingeschrieben. Aber ich brauche ja auch eine Fehlermeldung.
Deshalb wäre es nett, wenn mir jemand sagen könnte, wie ich das Problem behebe.

Hier der Code
PHP:
<? 
  include('config.php'); 
   
  if(isset($_GET['show']) AND isset($inhalt[$_GET['show']])) { 
    if(!file_exists($inhalt[$_GET['show']])) { 
      $datei = file( $inhalt['error'] ); 
    } else { 
      $datei = file( $inhalt[$_GET['show']] ); 
    } 
  } else { 
      $datei = file( $inhalt['error'] ); 
  } 
  $ueberschrift = array_shift ($datei); 
  $text = implode ("",$datei); 
?>

Vielen Dank

Christian Rosick
 
Mit [phpf]empty[/phpf]
Kannst Du vorher prüfen, ob überhaupt etwas in $_GET['show'] steht und wenn es leer ist selbst setzen.
Da man aber nicht in das $_GET-array schreiben sollte (Ich denke, das ist nicht nur meine persönliche Meinung, evtl. geht es gar nicht?), nimmst Du eine Hilfsvariable:
PHP:
<?
  include('config.php');

  if(empty($_GET['show'])) {
    $show='home'; // wenn nichts, dann Startseite setzen
  } else {
    $show=$_GET['show'];
  }
  //im folgenden muss $_GET.. durch $show ersetzt werden:
  if(isset($show) AND isset($inhalt[$show])) { // "isset($show) AND" entweder weglassen oder mit "!empty($show) AND" ersetzen! isset($show) ist immer true!
    if(!file_exists($inhalt[$show])) {
      $datei = file( $inhalt['error'] );
    } else {
      $datei = file( $inhalt[$show] );
    }
  } else {
      $datei = file( $inhalt['error'] );
  }
  $ueberschrift = array_shift ($datei);
  $text = implode ("",$datei);
?>

Hier noch mal ein etwas gekürzter Code, sollte theoretisch dasselbe machen, wenn ich keine Fehler gemacht habe:
PHP:
<?
  include('config.php');

  if(empty($_GET['show'])) {
    $show='home'; // wenn nichts, dann Startseite setzen
  } else {
    $show=$_GET['show'];
  }

  if(!empty($show) && isset($inhalt[$show]) && file_exists($inhalt[$show])) {
      $datei = file( $inhalt[$show] );
  } else {
      $datei = file( $inhalt['error'] );
  }
  $ueberschrift = array_shift ($datei);
  $text = implode ("",$datei);
?>
Oder:
Mein persönlicher Favorit mit ternären Operatoren, die sind aber nicht jedermanns Sache:
Wenns so nicht geht, dann weißt Du, warum die nicht jedermanns Sache sind :-)
PHP:
<?
    include('config.php');

    $show = (empty($_GET['show']))?'home':$_GET['show'];

    $datei = (!empty($show) 
        && isset($inhalt[$show]) 
        && file_exists($inhalt[$show]))?
            file( $inhalt[$show] ):
            file( $inhalt['error'] );

    $ueberschrift = array_shift ($datei);
    $text = implode ("",$datei);
?>

Du siehst, viele Wege führen nach Rom, hier sind es mindestens drei.

Gruß hpvw

PS:
Dir wird aufgefallen sein, dass ich andere Operatoren für AND genommen habe. Es ist vermutlich in diesem Fall egal, aber ich nehme die immer. Die Funktion beider Operatoren ist dieselbe, aber die Rangfolge ist anders.
 
Zuletzt bearbeitet:
Also ich weiß nicht, was "ternäre" Operatoren sind, aber es :)

Vielen Dank für deine überaus hilfreiche Hilfe :rolleyes:

Grüße,
Christian Rosick
 
TMG hat gesagt.:
Also ich weiß nicht, was "ternäre" Operatoren sind, aber es :)
Kommt von drei (ternär).

Das Konstrukt besteht aus drei Teilen:
(Bedingung) ? (Rückgabewert wenn Bedingung true) : (Rückgabewert wenn Bedingung false)

Du kannst dieses Konstrukt zur Variablenzuweisung verwenden oder auch direkt z.B. in einem echo oder bei der Übergabe eines Parameters an eine Funktion.

In der Doku ist er ganz knapp unter Ausdrücke beschrieben.

Anmerkung: Ich finde ternäre Operatoren Klasse, aber viele Programmierer mögen sie gar nicht, da sie angeblich unübersichtlich sind. Aber das ist IMHO eine Frage der Übung und ob man sie häufiger verwendet.

Andere Programmiersprachen, zum Beispiel Java, kennen diese kurze Form des if-else auch.
 
Zurück