basti123: dynamische Liste ständig anzeigen

Hallo!

Mich beschäftigt folgendes.
Ich habe eine Webseite, wo man Termineinträge machen kann. Angemeldete Nutzer sollen dann, die sie interessierenden, Termine anklicken können und eine Liste aller angeklickten Termine soll dann immer an der rechten Seite zu sehen sein. Dies, da ich weitere Unterseiten habe, die Terminliste soll aber immer zu sehen sein.

Aktuell habe ich es so, dass die Liste einmal in einer Datenbank abgelegt wird und, damit ich nicht bei jedem internem Seitenwechsel die Datenbank jedes mal abfragen muss, in ein Sessionarray geschrieben wird.
Aus diesem wird dann die dargestellte Liste erzeugt wird.

Klappt soweit, nur habe ich diesen schwerwiegenden Nachteil mitbekommen.

Die Nutzer können beim Einloggen sagen, dass sie eingeloggt bleiben wollen und dann wird das in einem Cookie bemerkt.

Ist der Nutzer nun schon auf einem anderem Rechner eingeloggt, wird da eine neue Session erzeugt und die Liste ist weg. Die Liste wird eigentlich nur aus der Datenbank geladen, wenn man sich komplett neu einloggt, dynamisch wird sie erweitert, wenn ein Termineintrag hinzugefügt wird.

Wo ich einen Denkanstoss brauche: wie halte ich die Liste am besten so, dass ich nicht bei jedem Wechsel ein Datenbankabfrage machen muss, aber diese Liste auch dann präsent ist, wenn der Nutzer meine Seite auf anderen Rechnern nutzt?

Vielen Dank,
basti

  1. Hallo,

    Wo ich einen Denkanstoss brauche: wie halte ich die Liste am besten so, dass ich nicht bei jedem Wechsel ein Datenbankabfrage machen muss, aber diese Liste auch dann präsent ist, wenn der Nutzer meine Seite auf anderen Rechnern nutzt?

    Eine Abfrage, ob deine Liste in der Session vorhanden ist - und darauf entsprechend reagieren. Genug Denkanstoss?

    vg ichbinich

    --
    Kleiner Tipp:
    Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...
    1. Hello,

      Wo ich einen Denkanstoss brauche: wie halte ich die Liste am besten so, dass ich nicht bei jedem Wechsel ein Datenbankabfrage machen muss, aber diese Liste auch dann präsent ist, wenn der Nutzer meine Seite auf anderen Rechnern nutzt?

      Eine Abfrage, ob deine Liste in der Session vorhanden ist - und darauf entsprechend reagieren. Genug Denkanstoss?

      Das ist unüberlegt, denn:

      Auf einem anderen Client läuft eine andere Session. So wäre es zumindest üblich und praktisch.

      Gemeinsame Daten sollten auch in einer gemeinsamen Datenhaltung liegen. Das einfachste ist also wirklich, bei jedem Request die DB-Abfrage durchzuführen. Dann wären die Daten auch immer "request-aktuell".

      @Basti: Angenommen, Du würdest für den User immer dieselbe Sessiondatei verwenden, was durchaus geht. Was soll passieren:

      • wenn der User auf dem einen Client in einem Vorgang navigiert
          und nun auf dem anderen Client ebenfalls diesen Vorgang anspricht?
          Was passiert da bei Datenveränderungen?
      • wenn sich der User auf dem einen Client abmeldet,
          soll er dann auf dem anderen auch abgemeldet sein?
      • ...

      Mach Dir erstmal genaue Gedanken darüber, ob ein User zwei oder mehr getrennte aktive Sessions haben können soll, oder ob die zu einer zusammengefasst werden. Das wäre dann so eine Art Remote-Control. Remote ist aber mit HTTP nicht möglich, da es zustandslos und (hier wohl wichtiger) auch verbindungslos arbeitet. Wenn Remote gewünscht wird, müsstest Du also die Verbindungsorientierung künstlich erzeugen. Das geht mit Ajax.

      Dazu müsstest Du den MC des "Client" dann auf einen "Client-Server" verlegen und in den Browsern nur noch die Views abrufen. Das bedeutet dann viiiel Javascript und asynchrone Kommunikation.

      Denn die Bediener desselben Users konkurrieren ja immer noch miteinander...

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de