Temporäre Reservierung - Logik?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Temporäre Reservierung - Logik?

    Hallihallo!

    Ich suche eine sinnvolle Möglichkeit, noch nicht vorhandene Datensätze für einen gewissen Zeitraum zu reservieren.
    Klingt irgendwie wirr, deshalb nun etwas ausführlicher:
    Auf einer Website können bestimmte Personen Daten eintragen. Dabei gibt es beliebig viele Anzeigeplätze der Daten, die sich in ihrer Positionierung und damit in ihrer Wahrnehmung durch Kunden unterscheiden. Es gibt also nahzeu unendlich Plätze, allerdings auch zehn besondere: Vier Plätze werden am Besten angezeigt, sechs weiter auch noch sehr gut und alle anderen Plätze mehr oder weniger nur zweitrangig. Klar soweit?

    Wenn Personen Daten eintragen und als Anzeigeplatz dafür nun einen dieser zehn besseren Plätze wählen, möchte ich wie folgt vorgehen: ich möchte nicht, dass eine Person diesen Platz zu lange beanspruchen kann. Ich möchte aber auch nicht, dass dieser Platz verbindlich gebucht wird, bevor die Daten überhaupt eingegeben wurden. Wenn ich aber die Personen Daten eintragen lasse und dann erst beim Abschicken dieser Daten den Platz verbindlich buche, dann kann bzw. wird es vorkommen, dass der eigentlich freie Platz zwischen dem Eintragen der Daten und dem Abschicken dieser Daten von einer weiteren Person gebucht wird und die erste person wiederum völlig umsonst gearbeitet hat.

    Noch immer klar?

    Sehr gut, dann könnt ihr mir hoffentlich helfen. Ich möchte es nun also so gestalten, dass eine Person einen Anzeigeplatz auswählt und diesen erstmal reserviert, sodass dieser für z.B. 30 Minuten gesperrt ist. Die Person hätte nun also eine halbe Stunde Zeit, ihre Daten einzugeben und kann sich sicher sein, dass ihr während dieser Zeit der Platz nicht durch andere Personen weggenommen wird. Doch wie realisiere ich das Ganze am sinnvollsten und ressourcensparendsten?
    Meine bisher sinnhafteste Idee war diese: Eine Person wählt einen Platz aus und klickt auf "Reservieren". Daraufhin wird ein Datenbankeintrag erstellt, mit einer ID dieses Platzes und seiner Reservierungszeit. Schickt die Person nun Daten für ihren reservierten Platz ab, wird der Datenbankeintrag gelöscht bzw. die Reservierung überflüssig, da die Buchung nun steht.
    Für andere Personen, die einen Anzeigeplatz reservieren möchten, werden nur Einträge angezeigt, die nicht oder vor mehr als 30 Minuten reserviert wurden. Soviel zu meinem Ansatz..aber:

    Ihr habt doch bestimmt noch bessere Vorschläge für mich, oder? Dieses Problem habe ich doch sicherlich nicht als einziger, obwohl mich google ziemlich auf dem trockenen sitzen lässt.
    Wie lösche ich zum Beispiel reservierte, aber nicht gebuchte Einträge? Erst dann, wenn eine Person wieder versucht, einen Platz zu buchen? Das geht doch bestimmt alles einfacher, vielleicht übersehe ich einfach etwas....ob ihr Vorschläge mit Datenbanken, Arrays oder Milcheis bringt ist mir eigentlich Jacke wie Hose - ich freue mich über jeden halbwegs konstruktiven Beitrag :-)

    Viele Grüße

    Breezzer

  • #2
    Hallo,

    ein Zeitstempel in der DB sollte ausreichen. Um die momentan reservierten Plätze abzurufen, zu zählen oder die Reservierung aufzuheben bzw. neu zu vergeben, brauchst du nur die folgende Where-Klausel zu verwenden:

    Code:
    where reserved_time is null or reserved_time + interval 30 minute > now()
    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      hey amica...

      dein vorschlag entspricht ja etwa meinem vorschlag. so habe ich es nun auch umgesetzt. funktioniert super. gestern dann der anruf vom auftraggeber: der kunde wünscht das nun doch anders. spitze :-D

      vielen dank und viele grüße
      Breezzer

      Kommentar


      • #4
        Zitat von Breezzer Beitrag anzeigen
        der kunde wünscht das nun doch anders. spitze :-D
        Oh ja, sowas ruiniert mir auch jedesmal den Zeitplan.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar

        Lädt...
        X