romy: include ergebnis, nicht ganze datei

Hallöchen ich bins nochmal

was muss ich eigentlich machen, wenn ich nicht eine ganze Datei includen möchte sondern zB nur das Ergebnis dieser Datei.
zB ich include a.php will aber nicht den ganzen php-mist einfügen sondern nur den Teil, den der Server nach dem parsen zurückliefert...
vielleicht kann mir auch jemand einen Tip geben, wo ich suchen muss, mir ist nicht ganz klar wie man das nennt und demzufolge weiss ich nicht wonach ich suchen soll

vielen dank

romy

  1. Hallöchen ich bins nochmal

    was muss ich eigentlich machen, wenn ich nicht eine ganze Datei includen möchte sondern zB nur das Ergebnis dieser Datei.
    zB ich include a.php will aber nicht den ganzen php-mist einfügen sondern nur den Teil, den der Server nach dem parsen zurückliefert...
    vielleicht kann mir auch jemand einen Tip geben, wo ich suchen muss, mir ist nicht ganz klar wie man das nennt und demzufolge weiss ich nicht wonach ich suchen soll

    das ist von php.net:

    Sowohl in PHP 3 als auch in PHP 4 ist es möglich, eine return-Anweisung innerhalb einer include()eten Datei anzugeben, um die Ausführung dieser Datei abzubrechen und zum aufrufenden-Skript zurück zu kehren. Es gibt aber ein paar Unterschiede in der Arbeitsweise. Der erste ist, dass bei PHP 3 die return-Anweisung nicht innerhalb eines Blocks auftreten darf, es sei denn, es ist ein Funktions-Block. In diesem Fall gilt return für diese Funktion und nicht für die ganze Datei. In PHP 4 gibt es diese Beschränkung nicht. PHP 4 erlaubt ihnen auch die Rückgabe von Werten bei include()eten Dateien. Sie können den Wert des include()-Aufrufs nutzen, als wenn Sie eine Funktion aufgerufen hätten. Das wird in PHP 3 einen Parse-Error ergeben.

    vielleicht hilfts ja

    gruss
    horst

    1. Hallöchen ich bins nochmal

      was muss ich eigentlich machen, wenn ich nicht eine ganze Datei includen möchte sondern zB nur das Ergebnis dieser Datei.
      zB ich include a.php will aber nicht den ganzen php-mist einfügen sondern nur den Teil, den der Server nach dem parsen zurückliefert...
      vielleicht kann mir auch jemand einen Tip geben, wo ich suchen muss, mir ist nicht ganz klar wie man das nennt und demzufolge weiss ich nicht wonach ich suchen soll

      das ist von php.net:

      Sowohl in PHP 3 als auch in PHP 4 ist es möglich, eine return-Anweisung innerhalb einer include()eten Datei anzugeben, um die Ausführung dieser Datei abzubrechen und zum aufrufenden-Skript zurück zu kehren. Es gibt aber ein paar Unterschiede in der Arbeitsweise. Der erste ist, dass bei PHP 3 die return-Anweisung nicht innerhalb eines Blocks auftreten darf, es sei denn, es ist ein Funktions-Block. In diesem Fall gilt return für diese Funktion und nicht für die ganze Datei. In PHP 4 gibt es diese Beschränkung nicht. PHP 4 erlaubt ihnen auch die Rückgabe von Werten bei include()eten Dateien. Sie können den Wert des include()-Aufrufs nutzen, als wenn Sie eine Funktion aufgerufen hätten. Das wird in PHP 3 einen Parse-Error ergeben.

      vielleicht hilfts ja

      --> nicht wirklich, das hatte ich auch schon gefunden, aber iregndwie wüsste ich nicht wo dann das return hingehört, da die includedeten Dateien keine reinen php-funktionen sind! was überhaupt returnen
      return all
      oder nur return
      Hilfe?!

      gruss
      horst

      1. Hi Romy

        vielleicht hilfts ja

        --> nicht wirklich, das hatte ich auch schon gefunden, aber iregndwie wüsste ich nicht wo dann das return hingehört, da die includedeten Dateien keine reinen php-funktionen sind! was überhaupt returnen
        return all
        oder nur return
        Hilfe?!

        hmmm erklär doch mal was genau du machen möchtest....

        gruss
        horst

  2. was muss ich eigentlich machen, wenn ich nicht eine ganze Datei includen möchte sondern zB nur das Ergebnis dieser Datei.

    Am sinnvollsten und vor allen Dingen einfachsten solltest Du dafür vielleicht eine Funktion benutzen.

    include() hat historischerweise eher die Funktion, Textdateien stupide zusammenzufügen, quasi aus mehreren Textdateien eine große Textdatei zu machen, die dann vom Interpreter geschluckt werden muß. Im Gegensatz dazu beispielsweise das Konzept Wirth'scher Sprachen (Modula), wo die einzelnen Programmdateien nicht als einfache Textdateien behandelt werden, sondern als gekapselte Module ("black box"), die von sich aus nichts an das Hauptprogramm rausrücken und die auf explizite Import-Anweisung auch nur genau definierte Teile exportieren.

    Gruß,
      soenk.e

  3. Hallo,

    was muss ich eigentlich machen, wenn ich nicht eine ganze Datei includen möchte sondern zB nur das Ergebnis dieser Datei.
    zB ich include a.php will aber nicht den ganzen php-mist einfügen sondern nur den Teil, den der Server nach dem parsen zurückliefert...
    vielleicht kann mir auch jemand einen Tip geben, wo ich suchen muss, mir ist nicht ganz klar wie man das nennt und demzufolge weiss ich nicht wonach ich suchen soll

    Wenn ich das jetzt richtig verstanden habe ...

    ... brauchst Du Output Buffering:

    ob_start ();
    include "datei.php";
    $resultat_der_datei = ob_get_contents ();
    ob_end_clean ();

    Du solltest beachten, dass der Datei, die include()iert wird, nur der Variable-Scope beim include-Aufruf zur Verfügung steht, also vermeide am Besten, das in einer Funktion zu tun.

    Grüße,

    Christian
    http://php.net/de/ob_start
    http://php.net/de/ob_get_contents
    http://php.net/de/ob_end_clean