ralphi: nach laden einer frameseite, eine ander frameseite aktualisieren

Hi Leute,

wiedermal eine Anfängerfrage.

ich möchte nach ausführen einer Seite (DB manipulation), eine seite in einem anderen Frame (ausgabe des tabelleninhalts) einfach nur aktualisieren.

also
$send = "Location: darstellung.php";
Header($send);
-> läd nur in den eigenen frame

und für <a href .. target= usw.
-> muss man den link manuell betätigen

Es ist bestimmt ganz einfach und es kommt der "na klar" effekt, aber im Web find ich einfach nix.

grüße aus LA
ralphi

  1. Hallo,

    wiedermal eine Anfängerfrage.

    ja, vermutlich. ;-)

    ich möchte nach ausführen einer Seite (DB manipulation), eine seite in einem anderen Frame (ausgabe des tabelleninhalts) einfach nur aktualisieren.

    Anders gesagt: Du möchtest die Antwort des Servers auf eine bestimmte Anfrage in ein anderes Fenster/Frame leiten. Genau dafür ist das target-Attribut des auslösenden Links oder Formulars gedacht.

    $send = "Location: darstellung.php";
    Header($send);
    -> läd nur in den eigenen frame

    Und ist auch noch falsch: Die HTTP-Spec verlangt eine _vollständige,_absolute_ URL für den Location-Header. Die meisten Browser sind gnädig und machen auch aus einer relativen URL etwas Vernünftiges, müssen sie aber nicht.

    und für <a href .. target= usw.
    -> muss man den link manuell betätigen

    Klar, aber wie löst du den serverseitigen Vorgang denn überhaupt aus? Link oder Formular, viel mehr kommt nicht in Frage, oder? Okay, vielleicht noch "zu Fuß" mit AJAX, aber dann musst du sowieso alles manuell machen. Ich glaube nicht, dass das hier relevant ist.

    Ciao,
     Martin

    --
    Man gewöhnt sich an allem, sogar am Dativ.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hi Martin,

      Klar, aber wie löst du den serverseitigen Vorgang denn überhaupt aus? Link oder Formular, viel mehr kommt nicht in Frage, oder?

      Was ich machen möchte, kann man auch eleganter anders lösen. Ich möchte es aber trotzdem wissen, wie es so gehen könnte.

      also:
      Ich habe 3 IFrames:
      Frame 1 (f1)ist ein html formular (einfügen) <form method="POST" action="neu.php"> im header <base target="f3">

      Frame 2 (f2) ist php eine tabelle mit "select * from tabelle" und <a target='f3' href='aktion.php?id=%s'><button>delete</button></a> einen link auf frame 3

      frame 3 (f3) is php mit "DELETE FROM autotext WHERE id=" . $_GET["id"]; oder insert (von f1)

      jetzt möchte ich nach dem frame 3 den datensatz gelöscht (von f2) oder eingefügt (von f1) hat, frame 2 automatisch aktualisieren

      also:
      f1 - > f3 mit form
      f2 - > f3 mit link
      nach ausführung von f3 - > aktuallisieren von f2

      natürlich könnte ich auch alles in frame 2 machen - mich interessiert aber der autorefresh in einem anderen frame

      ralphi

      1. Hallo,

        also:
        Ich habe 3 IFrames:

        ja, du machst es dir ganz schön schwer.

        Frame 1 (f1)ist ein html formular (einfügen) <form method="POST" action="neu.php"> im header <base target="f3">

        Wozu das base? Setz das target-Attribut doch dahin, wo es wirken soll - nämlich zum Formular.
        Okay, also rufst du ein PHP-Script auf und lässt dessen Antwort in Frame 3 anzeigen. Warum nicht in Frame 2, wo doch die Tabelle sowieso angezeigt wird?

        Frame 2 (f2) ist php eine tabelle mit "select * from tabelle" und <a target='f3' href='aktion.php?id=%s'><button>delete</button></a> einen link auf frame 3

        Nein, Frame 2 ist ebenfalls HTML, das von einem PHP-Script erzeugt wird. Glaubst du übrigens, es wäre eine gute Idee, das Löschen von Datensätzen mit einem Link auszulösen? Da kannst du dich jetzt schon darauf freuen, dass dir ein Suchmaschinen-Spider die ganze Tabelle löscht, indem er einfach nur den Links folgt.
        Von der unsinnigen Verschachtelung (button als Kind von a) ganz zu schweigen. Hier wäre von der Semantik her ebenfalls ein Formular angebracht, oder eventuell eins pro Datensatz, das jeweils nur den Submit-Button enthält und sonst nichts.

        frame 3 (f3) is php mit "DELETE FROM autotext WHERE id=" . $_GET["id"]; oder insert (von f1)

        Nein, Frame 3 ist auch HTML, nämlich die Antwort von neu.php oder möglicherweise auch von aktion.php - warum so umständlich?

        jetzt möchte ich nach dem frame 3 den datensatz gelöscht (von f2) oder eingefügt (von f1) hat, frame 2 automatisch aktualisieren

        Warum einfach, wenn's umständlich auch geht? - Entsorge Frame 3 und lass die Antwort von neu.php und aktion.php (die dann die gesamte neue Tabelle darstellt) in Frame 2 anzeigen.

        natürlich könnte ich auch alles in frame 2 machen - mich interessiert aber der autorefresh in einem anderen frame

        Natürlich könnte man auch ein Taschentuch nehmen, um sich die Nase zu putzen, aber mich würde trotzdem interessieren, wie das stattdessen mit Holzwolle geht. ;-)

        Ciao,
         Martin

        --
        Was du heute kannst besorgen,
        das geht sicher auch noch morgen.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Hi

          ein guter Tip mit den Bot's. Sollte ich damit ins Internet (vom Intranet) gehen achte ich drauf.

          das ich mit php über echo oder printf .. html und script erzeugen kann weiß ich natürlich. wenn ich keine DB (php)bräuchte, brauch ich auch keinen server (mit SQlite auch keinen), sondern nur einen Browser ;-)

          natürlich könnte ich auch alles in frame 2 machen - mich interessiert aber der autorefresh in einem anderen frame

          Natürlich könnte man auch ein Taschentuch nehmen, um sich die Nase zu putzen, aber mich würde trotzdem interessieren, wie das stattdessen mit Holzwolle geht. ;-)

          also: du weißt es auch nicht, wie man von einem frame aus automatisch (ohne klick) ein weiteren frameinhalt laden kann.
          müsste aber irgendwie funktionieren!?

          ralphi

          1. Tach!

            also: du weißt es auch nicht, wie man von einem frame aus automatisch (ohne klick) ein weiteren frameinhalt laden kann.
            müsste aber irgendwie funktionieren!?

            Das ist die klassische 2-Frames-Frage. Diese wurde früher mindestens im wöchentlichen Rhythmus gestellt und deren Antwort ist in den FAQ zu finden (siehe Forumskopf).

            dedlfix.