B.Schubert: Dynamisch generierte HTML in 2 Frames aufteilen, geht das???

ich habe eine Seite mit 4 Frames und bei einer Suchanforderung
im Frame 2 wird eine Liste aus einer DB mit Überschift generiert-PHP
das Problem: die Kopfzeile soll ins Frame 3, der Rest der
Tabelle in das vierte Frame sonst ist die Darstellung problematisch
(frame3 ist überlang, Frame4 hat eine überflüssige zweite Kopfzeile)

!-------------------------------------------!
       !                  frame1                   !
       !-------------------------------------------!
       !  ________ !                               !
       ! !________!!                               !
       !suchen  GO !                               !
       !           !                               !
       !           !          frame3               !
       !  frame2   !-------------------------------!
       !           !                               !
       !           !          frame4               !
       !           !                               !
       !           !                               !
       !           !                               !
       !-------------------------------------------!

kennt jemand eine geeignete Lösung?

die Dateien im Frame 3 sind einfache HTML-tabellen
kann man eine DB-generierte Tabelle beim generieren splitten und
in 2 frames darstellen???
ich bin für jede noch so kleine Hilfe sehr dankbar!

  1. Wollen wir mal vorne anfangen....

    Guten Morgen!!

    Nen bißchen was nettes kann man auch schreiben wenn man ein Problem hat........IMMER!

    Um zu Deinem Problem zu kommen, nach einfach erstmal drei frames:

    |-----------------|

    frame1
    frame2
    -----------------

    Das Target Deiner Suchabfrage von Frame2 setzt zu jetzt Frame3.

    Auf Frame3 wird eine PHP Seite aufgerufen die so ähnlich aussehen sollte wie das hier:

    query.php:

    <?php
    if ($frame == 1)
      {
    ?>
    Hier mußt Du halt die Überschrift reinschreiben..... oder was Du da auch immer haben willst.....
    <?php
      }
    elseif ($frame == 2)
      {
    ?>
    und hier halt das ergebniss Deiner Suchabfrage .... oder was auch immer....
    <?php
      }
    else
      {
    ?>
    <html>
      <head>
        <title>Suchabfrage</title>
      </head>
      <frameset rows="2">
        <frame src="query.php?frame=1">
        <frame src="query.php?frame=2">
      </frameset>
      <noframe>
      ....
      </noframe>
    </html>
    <?php
      }
    ?>

    Ach übrigens: Für jegliche Tippfehler, oder geistige Umnachtungen die mich zu jeglichen Fehler verleitet haben, übernehme ich keinerlei Haftung.... ;o)

    kennt jemand eine geeignete Lösung?

    Naja, ob de geeignet ist weiß ich nicht wirklich .... aber sie funktioniert ;o)

    kann man eine DB-generierte Tabelle beim generieren splitten und
    in 2 frames darstellen???

    mußt du halt einfach ein Limit setzten und bei dem limit un dem unteren Frame weiterführen..... in mysql is das LIMIT ... aber da Du ja nichts zu Deinem DB-System gesagt hast ... kann ich da nicht viel mehr zu sagen....

    ich bin für jede noch so kleine Hilfe sehr dankbar!

    np

    MfG

    TheSnow

  2. Hallo,

    Die Datenbank generiert doch die Tabelle als solche nicht selbst, sondern sicher ein script (php/perl)

    die Dateien im Frame 3 sind einfache HTML-tabellen
    kann man eine DB-generierte Tabelle beim generieren splitten und
    in 2 frames darstellen???
    ich bin für jede noch so kleine Hilfe sehr dankbar!

    Diese Datenbankabfrage kann ja auf jeder Seite innerhalb jedes frames stehen und den benötigten Teil erfragen.

    Die Codes der einzelnen Frameinhalte können innerhalb eines einzigen scriptes stehen und über $ENV aufgerufen und ausgeführt werden.

    --------------------------------------------------
    BSP-Prg-Auszug:

    BEGIN OF PERL

    print "Content-type: text/html
    \n
    \n";
    #print "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transisional//EN">";

    #######################################

    Basisvariablen

    #######################################
    if($ENV{'REQUEST_METHOD'} eq 'GET')
     {
      $daten = $ENV{'QUERY_STRING'};
     }
    else
     {
      read(STDIN, $daten, $ENV{'CONTENT_LENGTH'});
     }

    @Formularfelder = split(/&/, $daten);
    foreach $Feld (@Formularfelder)
     {
      ($name, $value) = split(/=/, $Feld);
      $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
      $value =~ s/<!--(.|\n)*-->//g;
      $Formular[$i] = $name;
      $i = $i + 1;
      $Formular[$i] = $value;
      $i = $i + 1;
     }
    $formularfelderfelder = $i;
    %Formular = @Formular;

    #######################################
    #foreach $Formular(@Formular)
    #{
    #print "$Formular<br>";
    #}

    #for ($i=0;$i<=5;$i++)
    #{
    #print "Formular $i: $Formular[$i]<br>";
    #}
    #######################################
    $daten=$Formular[0];

    if ($daten eq "main")
    {
    main();
    }

    elsif($daten eq "top")
    {
    top();
    }

    elsif($daten eq "middle")
    {
    middle();
    }

    elsif($daten eq "left")
    {
    left();
    }

    elsif($daten eq "right")
    {
    right();
    }

    elsif($daten eq "center")
    {
    center();
    }

    else
    {
    main();
    }

    ####################

    sub main()

    ####################
    sub main
    {
    print <<END_OF_HTML;
    <FRAMESET ROWS="111,*" BORDER=0 MARGINWIDTH=0 MARGINHEIGHT=0 FRAMEBORDER=0 FRAMESPACING=0>

    <FRAME NAME="frame1" SRC="index.pl?top" SCROLLING="no" MARGINWIDTH=0 MARGINHEIGHT=0 FRAMEBORDER=0>
    <FRAME NAME="frame2" SRC="index.pl?middle" SCROLLING="auto" MARGINWIDTH=0 MARGINHEIGHT=0 FRAMEBORDER=0>

    </FRAMESET>
    <noframes>
    Sie verwenden einen Browser der keine Frames unterstützt.  :-( Schade )-:
    </noframes>
    </HTML>

    END_OF_HTML
    }

    ####################

    sub top()

    ####################
    sub main
    {
    ...
    }

    --------------------------------------------
    usw.

    So erzeugt obiges script alle Inhalte der einzelnen Frames und in jedem Frame kann durch deinen geeigneten Datenbankaufruf das ausgegeben werden, was du haben möchtest.

    Geht sicher noch eleganter, was die "Perlerei" betrifft, aber es funktioniert.

    Gruß

    Andreas

    1. Sorry, das war die falsche Kiste, Du wolltest ja PHP statt Perl, aber die Lösung funktioniert.
      Habe gerade noch die Druckfehler rausgemacht.

      Hallo,

      Die Datenbank generiert doch die Tabelle als solche nicht selbst, sondern sicher ein script (php/perl)

      die Dateien im Frame 3 sind einfache HTML-tabellen
      kann man eine DB-generierte Tabelle beim generieren splitten und
      in 2 frames darstellen???
      ich bin für jede noch so kleine Hilfe sehr dankbar!

      Diese Datenbankabfrage kann ja auf jeder Seite innerhalb jedes frames stehen und den benötigten Teil erfragen.

      Die Codes der einzelnen Frameinhalte können innerhalb eines einzigen scriptes stehen und über $ENV aufgerufen und ausgeführt werden.


      BSP-Prg-Auszug:

      BEGIN OF PERL

      print "Content-type: text/html
      \n
      \n";
      #print "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transisional//EN">";

      #######################################

      Basisvariablen

      #######################################
      if($ENV{'REQUEST_METHOD'} eq 'GET')
      {
        $daten = $ENV{'QUERY_STRING'};
      }
      else
      {
        read(STDIN, $daten, $ENV{'CONTENT_LENGTH'});
      }

      @Formularfelder = split(/&/, $daten);
      foreach $Feld (@Formularfelder)
      {
        ($name, $value) = split(/=/, $Feld);
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ s/<!--(.|\n)*-->//g;
        $Formular[$i] = $name;
        $i = $i + 1;
        $Formular[$i] = $value;
        $i = $i + 1;
      }
      $formularfelderfelder = $i;
      %Formular = @Formular;

      $daten=$Formular[0];

      if ($daten eq "main")
      {
      main();
      }

      elsif($daten eq "top")
      {
      top();
      }

      elsif($daten eq "middle")
      {
      middle();
      }

      elsif($daten eq "left")
      {
      left();
      }

      elsif($daten eq "right")
      {
      right();
      }

      elsif($daten eq "center")
      {
      center();
      }

      else
      {
      main();
      }

      ####################
      sub main()
      ####################
      {
      print <<END_OF_HTML;
      <FRAMESET ROWS="111,*" BORDER=0 MARGINWIDTH=0 MARGINHEIGHT=0 FRAMEBORDER=0 FRAMESPACING=0>

      <FRAME NAME="frame1" SRC="index.pl?top" SCROLLING="no" MARGINWIDTH=0 MARGINHEIGHT=0 FRAMEBORDER=0>
      <FRAME NAME="frame2" SRC="index.pl?middle" SCROLLING="auto" MARGINWIDTH=0 MARGINHEIGHT=0 FRAMEBORDER=0>

      </FRAMESET>
      <noframes>
      Sie verwenden einen Browser der keine Frames unterstützt.  :-( Schade )-:
      </noframes>
      </HTML>

      END_OF_HTML
      }

      ####################
      sub top()
      ####################
      {
      ...
      }


      usw.

      So erzeugt obiges script alle Inhalte der einzelnen Frames und in jedem Frame kann durch deinen geeigneten Datenbankaufruf das ausgegeben werden, was du haben möchtest.

      Geht sicher noch eleganter, was die "Perlerei" betrifft, aber es funktioniert.

      Gruß

      Andreas