BAKKA: Frames mit Perl erzeugen

Hallo mal wieder..

Ich hab ein Perlscript, welches eine Eingabe erwartet und eine Ausgabe ausgibt....
Ich moechte jetzt gerne die eingabe in einem Frame und die Ausgabe in einem anderen Frame haben, und das alles in nur einem Perl dokument...
also den einen Teil des Perlscripts(die Eingabe) in den einen Frame und den anderen Teil des Perlscripts(die Ausgabe)in den anderen Frame...

ist das moeglich?

Danke im Voraus, und nich boese sein , wenn die Frage zu bloed ist  :)

BAKKA

  1. Hallo Bakka

    Du gestalltest den Eingabeframe als normales HTML-Formular und gibst im Form-Tag als Action das perlskript an, das mit den Eingaben ausgeführt werden soll und zusätlich ein Attribut target="Ausgabeframe" an.

    z.B. <form action="../cgi-bin/tuwas.pl" method="POST" target="Ausdabeframe" enctype="application/x-www-form-urlencoded">

    Dabei ist Ausgabeframe der Name den Du im Frameset definiert hast.

    Grüsse

    Tom

    1. Danke ersteinmal fuer Deine Loesung,

      aber gibt es nicht irgendwie die moeglich keit innerhalb meines Perlscripts die Frames einzufügen ?
      Also irgendwie in der form:

      #!/usr/local/bin/perl
      use CGI qw(:standard);

      print "<frameset> ";
      print "<frame >";
      meine Eingabe

      print "<frame>";
      meine Ausgabe

      print "</frameset>";

      ????

      Falls eine solche Version totaler Unsinn ist,
      versuch tritzdem keine Boesen Worte zu benutzten
      :)
      Bakka

      1. Hallo Bakka

        aber gibt es nicht irgendwie die moeglich keit innerhalb meines Perlscripts die Frames einzufügen ?

        Natürlich, nur sieht das so aus, dass Du zuerst die HTML-Dokumente für die Frameinhalte erzeugts, diese auf dem Server speicherst, dann das Framset-Dokumnet erzeugst und dieses zum Browser zurücksendest. Sieht in Perl etwa so aus:

        $AbsolutePath = "/user/iregndwas/htdocs/";        # absloter Pfad auf dem Server
        $Frameeingabe = $AbsolutePath."eingabe.html"; # Dateiname des Eingabe-Framedokument
        $Frameausgabe = $AbsolutePath."ausgabe.html"; # Dateiname des Ausgabe-Framedokument
        $Frameset = $AbsolutePath."index.html"; # Dateiname des Frameset-Dokument

        Du kannst das Framedokument für die Eingabe aus Perl erzeugen, jedoch kannst Du im Frames-Dokument (das weiter unten erzeugt wird) auch nur ein Link auf eine statische HTML-Seite setzen.

        open(EINGABEFRAME, ">$Frameeingabe") die;
        print EINGABEFRAME "<html> ... </html>";   # Erzeuge das Eingabeformular
        close  EINGABEFRAME;

        open(AUSGABEFRAME, ">$Frameausgabe") die;
        print AUSGABEFRAME "<html> ... </html>";   # Erzeuge die Ausgabe nach deinen Wünschen
        close AUSGABEFRAME;

        open(FRAMESET, ">$Frameset") die;
        print FRAMESET "<html> ... </html>";   # Erzeuge das Frameset-Dokument. Hierdrinn musst Du die Links auf die URLs der beiden Framedokumente richtig setzen.
        close FRAMESET;

        Schickt dem Browser das Framesetdokument zurück

        print "Content-Type: text/html\n\n" ;
        print "Location: $URLzuFramset";

        Also viel Glück und Grüsse

        Tom

        P.S: Ich bin ein wenig in Eile und werde bis Montag offline sein. Sorry :-(

      2. Hi,

        aber gibt es nicht irgendwie die moeglich keit innerhalb meines Perlscripts die Frames einzufügen ?
        Also irgendwie in der form:

        print "<frameset> ";
        print "<frame >";
        meine Eingabe

        print "<frame>";
        meine Ausgabe

        print "</frameset>";

        mit Perl kannst Du exakt das selbe machen, wie von Hand. Überlege also, wie Du die Frames mit einem Texteditor und HTML-Dateien erstellen würdest, und programmiere das Script dann so, daß es das für Dich erledigt. Ein Parameter, der Dir sagt, welche Seite gerade erstellt werden soll (0=Frameset, 1=Eingabeframe, 2=Ausgabeframe), hilft.

        Cheatah

  2. hi!

    Ich moechte jetzt gerne die eingabe in einem Frame und die Ausgabe in einem anderen
    Frame haben, und das alles in nur einem Perl dokument...

    Das geht, wenn auch etwas kompliziert:

    Das Perl-Skript skript.pl erzeugt normalerweise einfach eine Frameset-Definion:

    <frameset ...>
      <frame src="skript.pl?frame=eins" ...>
      <frame src="skript.pl?frame=zwei" ...>
    </frameset>

    In der Framesetdefinition ruft sich das Skript für jeden Frame selbst auf, allerdings mit Parameter. Am Anfang des Skripts kannst du dann überprüfen, was es ausgeben soll, und zwar anhand der übergebenen Parameter: wird kein Parameter übergeben, gibt es das Frameset aus, wird der Parameter frame übergeben, gibt es den Source des jeweiligen Frames aus.

    bye, Frank!

    1. Das geht, wenn auch etwas kompliziert:
      Das Perl-Skript skript.pl erzeugt normalerweise einfach eine Frameset-Definion:
      <frameset ...>
        <frame src="skript.pl?frame=eins" ...>
        <frame src="skript.pl?frame=zwei" ...>
      </frameset>

      Ich mache es lieber mit drei verschiedenen Perl-Skripts: Eines generiert nur den Frameset mit den beiden Frames, und dieses aktiviert dann ja die beiden anderen Skripte.

      Warum alles in ein Skript zwängen und dann mühsam per Parameter wieder unterscheiden?

      1. Hi,

        Ich mache es lieber mit drei verschiedenen Perl-Skripts: Eines generiert nur den Frameset mit den beiden Frames, und dieses aktiviert dann ja die beiden anderen Skripte.

        Warum alles in ein Skript zwängen und dann mühsam per Parameter wieder unterscheiden?

        warum drei Dateien auf den Server schmeißen und pflegen, wenn es problemlos in einer einzigen geht, zumal wenn die selben Dinge passieren (z.B. Konfigurationsdaten einlesen)? ;-)

        Cheatah