Jan: Problem mit Menü über Frames

Hallo Leute!

Also, ich hab 2 Framesets. Und zwar teilt das 1. die Seite in 2 Reihen, und 2. Frameset die untere Reihe in 2. Spalten.
Die Frames heißen top, left und main, die Zugehörigkeit müsste eh klar sein *ggg*
Ich hab diese Variante extra deswegen gewählt, um kein JavaScript einsetzen zu müssen.

Nun ist es so, dass im Top-Frame das "Hauptmenü" steht, u.a. die wichtigen Punkte "Beschreibung" und "Preise".
Wenn ich nun auf eines dieser 2 Punkte klicke, kommt in der unteren Reihe ein neues Frameset (gleich aufgebaut wie das letzte), mit links einem Menü (Links "Kategorie 1" bis "Kategorie 10") und im main-Frame die Seite für "Kategorie 1".
Nun möchte es der Kunde so haben, also folgendes Schema:

Jemand besucht die Seite und klickt auf "Beschreibungen". Es kommt das Menü, und in der main als erstes die Seite für "Kategorie 1". Nun klickt er sich durch, und bleibt bei "Kategorie 7" stehen und klickt auf "Preisliste". Nun sollte da wieder das Menü erscheinen, und im main-Frame gleich die Preislisten-Seite für "Kategorie 7".
D.h. wenn der Besucher zum ersten Mal im Hauptmenü einen Bereich wählt (egal ob "Beschreibung" oder "Preisliste") soll "Kategorie 1" erscheinen, ansonsten die zuletzt ausgewählte.

Ich hätte schon eine JavaScript-Lösung parat. Und zwar rufe ich im Untermenü links einfach das 2-Frames-ändern-Script aus, dass zum einen im main die Kategorien-Seite anzeigt, und den Top-Frame mit entsprechenden Parametern neu anzeigt. So könnte ich das ganze über Parameterübergabe lösen.

Nur ist es so, dass ich eigentlich das gesamte Projekt ohne den Einsatz von JavaScript realisieren wollte und auch immer noch möchte. Es ist auch ein Wunsch des Kunden, das ganze ohne JavaScript zu lösen, wenn möglich.

Weiß jemand eine passende (reine) PHP-Lösung dafür?

lg, Jan

  1. Hallo Jan,

    Weiß jemand eine passende (reine) PHP-Lösung dafür?

    Du verschachtelst Framesets, wenn ich das richtig verstanden habe?

    Dann kannst Du Dir http://aktuell.de.selfhtml.org/artikel/phpasp/php-frames/ mal anschauen, vielleicht hilft Dir das weiter.

    Grüße,

    Christian

    1. Hallo!

      Du verschachtelst Framesets, wenn ich das richtig verstanden habe?

      Dann kannst Du Dir http://aktuell.de.selfhtml.org/artikel/phpasp/php-frames/ mal anschauen, vielleicht hilft Dir das weiter.

      Ja, ich verschachtle Frames, aber daran liegt es nicht, sondern an der Parameterübergabe.

      Nochmals ne genaue Erklärung. Bisher sind alle Frameseiten reine HTML-Seiten, außer die die Beschreibungs- und Preislisten-Seiten, diese werden mit beschr.php?kat=1 und plist.php?kat=1 aufgerufen.

      Im oberen Frame wird einfach das Beschreibungs-Frameset im unteren Frame aufgerufen. Standardmäßig öffnet sich da dann das Kategorien-Menü und zu allererst die Beschreibungs-Seite für die Kategorie 1. Hier kann der User dann durchklicken.
      Ich hab mir das so gedacht. Ich wandle mal den Topframe mit dem Hauptmenü in ein PHP um, genauso die Beschreibungs- und Preislisten-Frameset-Seite.
      Wenn einer nun links im Menü eine Beschreibungsseite ausführen will, wird nicht einfach diese gleich angezeigt, sondern ein JavaScript ausgeführt (2 Frames ändern), welches den Topframe neulädt, und zwar als Erweiterung dazu die gerade gewählte Kategorie als Parameter. Auch die entsprechenden Links für Beschreibungs- und Preislisten-Frameset wird um diesen Parameter erweitert.
      Wenn ich dann oben eben den Link anklicke wird das Frameset mit dem Parameter aufgerufen und somit erscheint dann als "Startseite" auch auch gleich die entsprechende Kategorie.
      Also wenn jemand als letztes bei den Beschreibungen Kategorie 3 besichtigt hat, und dann oben auf den Link "Preisliste" klickt, wird anhand der übergebenen Parameter auch gleich die Preisliste der Kategorie 3 angezeigt.

      So funktioniert das alles sehr gut, aber mein Problem ist, dass ich eigentlich nicht vor hatte, JavaScript einzusetzen.

      Nur weiß ich nun nicht, wie ich diesen Vorgang rein mit PHP lösen kann :o(

      Gruß, Jan

      1. hallo, Jan.

        ehrlich gesagt verstehe ich nicht bis ins Detail, was du vorhast und vor allem frage ich mich, ob du es dir nicht komplizierter als nötig machst.

        Mein erster Vorschlag wäre, auf Frames zu verzichten. Deine Navigation kann man ohne Frames äquivalent und viel benutzerfreundlicher gestalten. Das ist meine kategorische Überzeugung und es ist ein Axiom.

        So wie ich dein Problem verstanden habe, gibt neben der Non-Frame-Version durchaus eine Möglichkeit, auf JavaScript zu verzichten.
        Schon jetzt erstelllst du anscheinend ein Frameset mit per JavaScript übergebenen Parametern.
        Ich denke da an die Möglichkeit, das Frameset selbst mit PHP zu generieren. Das würde bedeuten, dass jeder Link, der Änderungen in mehr als einem Fenster zur Folge hat, das komplette Frameset mit den jeweiligen Parametern neu aufruft. Das Frameset würde dann die jeweiligen Seiten enthalten. Nebenbei wäre dadurch auch eine Verschachtelung vermeidbar.

        Ich weiß nicht, wo das Problem ist, bei jedem Unterseitenaufruf das Frameset neuzuladen:
        <a href="erstelle_frameset.php?kat=X&prod=Y&foo=bar&..." target="_top">...</a>
        So könnte man immer die Preislisten- und Beschreibungsseiten je nach Unterseiten verlinken.

        Im Übrigen finde ich, dass deine Probleme eher auf einen extrem suboptimalen Projektaufbau hinweisen. Auch nach deinen ausführlichen Erklärungen verstehe ich nicht, wie ich mich als Benutzer auf den Seiten bewegen sollte. Wenn ich mir die Beschreibung zu einem Produkt ansehen will, dann suche ich diesen Link nicht in einem völlig anderen Frame. Zudem ändert sich das Ziel/die Semantik des Links während man die Seite durchstöbern, deshalb finde ich es mehrfach problematisch.

        (Überhaupt habe ich nach und nach das Gefühl, dass hier im Forum generell *enorm* viele Fragen nur dadurch entstehen, dass die Fragenden sich völlig undurchsichtige und nicht nachvollziehbare Webseiten- und Webapplikationsstrukturen ausdenken. Nebenan ist beispielsweise eine Frage, wie ein Dropdown-Formularfeld in einem anderen Fenster dynamisch mit JavaScript geändert werden kann. Dann gibt es auch Spezis, die zwei oder mehrere Popup-Fenster öffnen möchte. Ja, himmelherrgottsakramentnochmal[tm], wer soll so etwas in Teufels Namen bedienen!?! Habt ihr denn nie etwas von Usability und Ergonomie gehört???ß
        Wenn sich eine Frage des Projektaufbaus nicht einfach lösen lässt, dann wird m.E. auch die Usability der ganzen Seite grauenhaft. Aber um zu verstehen, wieso man überhaupt solch komplizierte Seiten erstellen möchte, bin ich als KISS-Junkie wohl nicht geeignet.)

        Mathias

  2. Hallöle

    Also, ich hab 2 Framesets. Und zwar teilt das 1. die Seite in 2 Reihen, und 2. Frameset die untere Reihe in 2. Spalten.
    Die Frames heißen top, left und main, die Zugehörigkeit müsste eh klar sein *ggg*

    Intelligente Namensgebung.
    top.location.href = "blabla.html"

    Was passiert jetzt?
    Wird das gesamte Frameset ersetzt?
    Oder doch nur der Frame mit dem intelligenten Namen top?

    Der Kopfschüttelnde