Torsten: Include = Rückgabewert?

Hallo und einen wunderschönen, sonnigen Septembertag!

Also ich habe eben ein wenig im Archiv rumgesucht, bin aber zu keiner Lösung gekommen!

Also mein Anliegen ist folgendes:

Ich möchte auf einer HP die menueführung nicht mit Frames sondern mit Include Befehlen machen.

Also wenn ich auf einen Link klicke, soll eine andere Seite includiert (?!?) werden, als im Moment. Das klappt auch sehr gut, aber ich würde gerne Testen ob diese Datei exestiert und bei false eine andere anzeigen (baustelle). Dazu möchte ich aber nur den Include Befehl verwenden.
Also so:

include Hilfe auf
If Hilfe = false
else rufe Baustelle auf

Bitte keine komplexen Scripte.
Gut zu wissen währe ob include überhaupt true oder false zurück gibt (konnte in der Hilfe nix darüber finden, denke eher nicht)

LG aus Hamburg (sonnige 26°)
Torsten

  1. Hallo Torsten!

    include Hilfe auf
    If Hilfe = false
    else rufe Baustelle auf

    Bitte keine komplexen Scripte.

    Ich hoffe, folgendes ist Dir nicht zu komplex:
    if(is_file($file))
      {
        // datei existiert
        include($file);
      }
    else
      {
        // datei existiert nicht
        include('baustelle.php');
      }

    Die wohl einfachste Möglichkeit ist also die Funktion is_file() daüfr zu benutzen (Lesetip: http://de.php.net/is_file).

    MfG
    Götz

    --
    Losung und Lehrtext für Donnerstag, 18. September 2003
    Weh dem, der mit seinem Schöpfer hadert, eine Scherbe unter irdenen Scherben! Spricht denn der Ton zu seinem Töpfer: Was machst du? (Jesaja 45,9)
    Gott lässt sich nicht von Menschenhänden dienen wie einer, der etwas nötig hätte, da er doch selber jedermann Leben und Odem und alles gibt. (Apostelgeschichte 17,25)
    (http://www.losungen.de/heute.php3)
    1. Hi,

      if(is_file($file))
          include($file);
      else
          include('baustelle.php');
      Die wohl einfachste Möglichkeit ist also die Funktion is_file() daüfr zu benutzen (Lesetip: http://de.php.net/is_file).

      Nur wird die _so_ nicht funktionieren, da der Include-Path berücksichtigt werden müßte.

      Ich finde nichts zu einem Rückgabewert von include, nur daß es eine Warnung erzeugt, wenn das File nicht existiert.
      Mit PHP kenn ich mich aber nicht genug aus, um zu wissen, ob man so eine Warnung abfangen kann.

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
      http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
      1. Hi,

        if(is_file($file))
            include($file);
        else
            include('baustelle.php');
        Die wohl einfachste Möglichkeit ist also die Funktion is_file() daüfr zu benutzen (Lesetip: http://de.php.net/is_file).

        Nur wird die _so_ nicht funktionieren, da der Include-Path berücksichtigt werden müßte.

        Warum sollte es nicht unktionieren? Es ist zwar nicht ganz das was ich haben will, aber ich habe die methode verwendet und es läuft.
        -----------------------------------
        $b = $_GET['b'];

        $c[1] = 'start';
        .
        .
        .
        $c[8] = 'gaestebuch/gaestebuch';

        if(!$b)
        {
        $b = 1;
        }
        $link = $c[$b].'.php';
        if(!is_file($link))
          {
            $link = 'baustelle.php';
          }
        ---------------------------------------

        und das ist der link:
        ---------------------------------------
        <a href="index.php?b=3" target="_self">bla</a>
        ---------------------------------------

        Ich finde nichts zu einem Rückgabewert von include, nur daß es eine Warnung erzeugt, wenn das File nicht existiert.

        Jo das hab ich auch gefunden.
        Also da es normalerweise dabei steht, das der Rückgabewert true or false ist, nehm ich mal an das dies bei Include nicht der Fall ist.

        Danke für Eure Hilfe
        LG Torsten

      2. Hallo Andreas,

        Nur wird die _so_ nicht funktionieren, da der Include-Path berücksichtigt werden müßte.

        Ja.

        Ich finde nichts zu einem Rückgabewert von include,

        Falls in der eingebundenen Datei selbst ein return irgendwas durchgeführt wird, wird dies zurückgegeben. Ansonsten AFAIK immer NULL, auch bei Fehler.

        nur daß es eine Warnung erzeugt, wenn das File nicht existiert.

        Ja.

        Mit PHP kenn ich mich aber nicht genug aus, um zu wissen, ob man so eine Warnung abfangen kann.

        Entweder mit set_error_handler, alternativ auch folgene Konstruktion:

        ----------------------------------------------------
        $old_track_errors = ini_get ('track_errors');
        ini_set ('track_errors', true);
        $php_errormsg = null;

        @include ("a.php");

        if ($php_errormsg !== null)) {
          @include ("baustelle.php");
        }

        ini_set ('track_errors', $old_track_errors);
        ----------------------------------------------------

        Viele Grüße,
        Christian


        1. $old_track_errors = ini_get ('track_errors');
          ini_set ('track_errors', true);
          $php_errormsg = null;

          @include ("a.php");

          if ($php_errormsg !== null)) {
            @include ("baustelle.php");
          }

          ini_set ('track_errors', $old_track_errors);

          Jo und das ^^ ist die komplizierte Variante!

          Gruß Torsten

          1. Hallo Torsten,

            Jo und das ^^ ist die komplizierte Variante!

            Jedoch diejenige, die im Gegensatz zur anderen immer funktionieren wird. (wenn ich jetzt keinen Tippfehler reingebastelt habe ;-))

            Viele Grüße,
            Christian

            1. Hallo Christian!

              Jedoch diejenige, die im Gegensatz zur anderen immer funktionieren wird. (wenn ich jetzt keinen Tippfehler reingebastelt habe ;-))

              Jaja, es ist auch immer das Selbe! *g*

              Einigen wir uns auf unentschieden.
              Weil: Torsten wollte was einfaches, hat er von mir bekommen.
              Aber weil ich ein paar Sachen nicht berücksichtigt habe hat er von Dir nun eine wasserdichte, aber dafür ein klein wenig komplexere Lösung bekommen.

              MfG
              Götz

              --
              Losung und Lehrtext für Donnerstag, 18. September 2003
              Weh dem, der mit seinem Schöpfer hadert, eine Scherbe unter irdenen Scherben! Spricht denn der Ton zu seinem Töpfer: Was machst du? (Jesaja 45,9)
              Gott lässt sich nicht von Menschenhänden dienen wie einer, der etwas nötig hätte, da er doch selber jedermann Leben und Odem und alles gibt. (Apostelgeschichte 17,25)
              (http://www.losungen.de/heute.php3)