Ingo: Datei einlesen ohne Sie direkt auszugeben

Hi,

habe folgendes Problem: Ich habe mit php ein Dropdown-menü erstellt, welches in einer eigenen .php-datei gespeichert ist.

Diese datei möchte ich in ein anderes php-script einbinden und von dort aus an einen platzhalter in einem html-template übergeben.

include 'datei' gibt das menü dann aber gleich am anfang des templates aus und ersetzt den platzhalter mit einer 1.

Hat da vielleicht jemand einen tip für mich? Wäre klasse.

Gruß
Ingo

  1. Hi,

    habe folgendes Problem: Ich habe mit php ein Dropdown-menü erstellt, welches in einer eigenen .php-datei gespeichert ist.

    Diese datei möchte ich in ein anderes php-script einbinden und von dort aus an einen platzhalter in einem html-template übergeben.

    include 'datei' gibt das menü dann aber gleich am anfang des templates aus und ersetzt den platzhalter mit einer 1.

    Hat da vielleicht jemand einen tip für mich?

    Ja, Nachlesen - wie man include/require auch selbstdefinierte Rückgabewerte liefern lassen kann.
    (Oder, wenn PHP-Ausführung in dem File nicht erforderlich sein sollte, dann file_get_contents.)
    [Und darüber, das ganze vielleicht in eine Funktion zu packen, wenn doch dynamische Berechnungen stattfinden, könntest du auch mal nachdenken.]

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Hi Chris,

      aus den beschreibungen die ich so finden konnte werde ich irgendwie nicht schlau. Daher möchte ich dich bitten, mir eine kurze Anweisung zu schreiben, wie so etwas aussehen müsste, wäre super.

      Gruß
      Ingo

      1. Mahlzeit Ingo,

        aus den beschreibungen die ich so finden konnte werde ich irgendwie nicht schlau. Daher möchte ich dich bitten, mir eine kurze Anweisung zu schreiben, wie so etwas aussehen müsste, wäre super.

        ChrisB hat Dich auf file_get_contents() hingewiesen (allerdings ohne direkten Link - nein, wie frevelhaft!) ... was genau ist Dein Problem damit?

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Mahlzeit Ingo,

          »» aus den beschreibungen die ich so finden konnte werde ich irgendwie nicht schlau. Daher möchte ich dich bitten, mir eine kurze Anweisung zu schreiben, wie so etwas aussehen müsste, wäre super.

          ChrisB hat Dich auf file_get_contents() hingewiesen (allerdings ohne direkten Link - nein, wie frevelhaft!) ... was genau ist Dein Problem damit?

          MfG,
          EKKi

          Hi,

          das Problem ist, das er wenn ich file_get_contents anwende, immer den php-code ausgibt anstatt das dropdown-menü anzuzeigen.

          Ich kriege es einfach nicht zustande, das ganze in eine funktion zu packen oder einen brauchbaren return-wert zu definieren :-(

          Gruß
          Ingo

          1. Hi,

            bitte zitiere vernünftig, und nicht einfach alles!

            das Problem ist, das er wenn ich file_get_contents anwende, immer den php-code ausgibt anstatt das dropdown-menü anzuzeigen.

            Ja, darauf wies ich bereits hin - die Funktion bietet sich eher an, wenn man nur reine "Daten" laden will, und nicht auf Ausführung von PHP-Code darin angewiesen ist.

            Ich kriege es einfach nicht zustande, das ganze in eine funktion zu packen oder einen brauchbaren return-wert zu definieren :-(

            Wieso nicht?

            Das simpelste wäre eine Funktion, die das, was du derzeit "so" aus der Datei heraus ausgeben lässt, per echo ausgibt.

            Etwas schöner wäre eine Funktion, die ihre Ausgaben in einer String-Variablen "sammelt", und diese am Ende zurückgibt.

            Und return per include funktioniert vom Prinzip her genauso - Ausgaben sammeln, am Ende der Datei per return zurückgeben.

            Wenn du das nicht alleine schaffst, dann liefere uns eine brauchbare Problembeschreibung, was genau du versucht hast - kein "krieg ich nicht hin", das ist analog zu "funzt nich".

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            1. Ok,

              also folgendes:

              Ich versuche derzeit ein html-template in eine php-datei einzubinden.
              von der php-datei aus übergebe ich variablen an das template, ungefähr so:

              $tpl->assign('var', $var);
              tpl->out();

              ('var', $var) = ('platzhalter im template', $variable) platzhalter im template sieht so aus: {var}

              wenn ich nun mit include('datei.php'); arbeite, so wird das dropdownmenü vor dem Template angezeigt und der platzhalter {var} wird durch eine 1 ersetzt.

              mache ich

              $menu = file_get_contents('datei.php');

              so gibt er den php-code als text aus anstatt das dropdownmenü anzuzeigen.

              mit require passiert das gleiche wie mit include.

              datei.php beginnt mit <?php und endet mit ?>, enthält an manchen stellen auch ein echo, ich zeige euch das mal:

              <?php
              include('xxx.php');
              $db_connect=mysql_connect($server, $user, $passwort);
              mysql_select_db($datenbank, $db_connect);
              echo "<select size="1" name="xxx" class="test">";
              $ergebnis = mysql_query("SELECT yy, xxx FROM zzz");
              while($webseite = mysql_fetch_array($ergebnis))
              {
              echo "<option value="".$xxx['xxx']."">";
              echo $xxx['xxx'];
              echo "</option>\n";
              }
              echo "</select>\n";
              ?>

              am liebsten würde ich dieses dropdownmenü als variable an das template senden, nämlich so:

              $tpl->assign('menu', $menu);

              ich hoffe ihr könnt damit etwas anfangen und danke euch für eure hilfe.

              Gruß
              Ingo

              1. Hi,

                Ich versuche derzeit ein html-template in eine php-datei einzubinden.
                von der php-datei aus übergebe ich variablen an das template, ungefähr so:

                $tpl->assign('var', $var);
                tpl->out();

                Warum erwähnst du jetzt eigentlich zum ersten Mal, dass du mit einem Template-System arbeitest ...? (Und dann immer noch nicht, mit welchem.)

                Sowas können durchaus relevante Infos sein - also liefere solche bitte das nächste Mal gleich mit.

                wenn ich nun mit include('datei.php'); arbeite, so wird das dropdownmenü vor dem Template angezeigt

                Natürlich, wenn du in dieser Datei direkte Ausgaben machst.

                $menu = file_get_contents('datei.php');

                so gibt er den php-code als text aus anstatt das dropdownmenü anzuzeigen.

                Ja, das hatten wir ja nun schon mehrfach.

                mit require passiert das gleiche wie mit include.

                Natürlich - das liegt daran, dass der Unterschied zwischen include und require ein minimaler ist. (Hast du dich informiert, welcher?)

                datei.php beginnt mit <?php und endet mit ?>, enthält an manchen stellen auch ein echo, ich zeige euch das mal:

                Also die direkten Ausgaben, die du ja vermeiden solltest.
                Wie bspw., das hatte ich auch schon angedeutet.
                Also, wo ist dein Versuch, das umzusetzen?

                am liebsten würde ich dieses dropdownmenü als variable an das template senden, nämlich so:

                $tpl->assign('menu', $menu);

                Na dann sorge dafür, dass es (also sein HTML-Code, den du zuvor erzeugt hast), auch in einer Variablen "landet", anstatt direkt ausgegeben zu werden.

                MfG ChrisB

                --
                Light travels faster than sound - that's why most people appear bright until you hear them speak.