Denkanstoß gesucht, Querabfragen

  • PHP

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Denkanstoß gesucht, Querabfragen

    Moin Moin Zusammen!

    ich zerbrech mir nun seit gut 3 Stunden den Kopf wie ich mein Problem am leichtesten lösen kann...
    Wie immer mit so wenig Code wie möglich...

    Beschreibung:
    Für mein Hobby, Geocaching, habe ich einen Echtzeitcache gebaut...
    Hierzu wird folgendes verwendet...

    Login / Codeeingabe:



    1. Tabelle 'teams':


    2. Tabelle 'aufgaben':


    3. Tabelle 'code':



    Ablauf:
    Das Team was den Echtzeit-Geocache macht kommt beispielsweise an Stage 8 an.
    Meldet sich Anhand der Code-Card und dem Schlüsselwort an...
    Ab hier weiß ich, die TeamID (cryptisch) und anhand des Schlüsselwortes an welcher Stage sie sich befinden...

    Beispieldaten:
    teamid = ffb4f460ca6514f780e7982212564efc
    Stage = 8

    Nun geht es darum abzuprüfen ob das Team

    1. nicht schon an Stage 11 ist
    2. nicht Stage 4 übersprungen hat


    Was passiert wenn sich ein Team an einer Stage anmeldet:
    Es wird in der Tabelle 'teams' der Timestamp abgelegt, bei der Stage, an dem sich das Team anmeldet.

    Jemand eine Idee?
    Ich komm auf keinen vernünftigen Lösungsansatz...

    Danke und Grüße,

    Stefan
    Nein! Doch! OHH!
    Wenn ich die Frage richtig verstanden habe, dann brauchst du einen Zähler für die Teams.
    Bei der ersten Station zählt er eine Eins, bei der Zweiten eine Zwei, u.s.w.

    Wenn nun die vierte Station erreicht wurde, der Zähler aber nur Zwei zählt,
    dann wurde eine Abkürzung genohmen.
    Bei <Press Space> in den Sternenhimmel drückend...
    @Eddy Dreizehn Moin und vielen Dank,...
    Ich habe ja so gesehen die Daten in der "teams" Tabelle drin...

    Wie gesagt, ablauf ist,...

    Team kommt, meldet sich an,... ich hab den Code (damit weiß ich welches Team) und ich hab das Keyword (damit weiß ich welche Station versucht wird anzusprechen)
    jetzt muss ich wissen, ist das team vorher schon an der Stage gewesen? Hat das Team eine Stage übersprungen?

    Die Stages haben feste Nummern... 1, 4, 8, 11, 14
    Nein! Doch! OHH!
    Dann erstell halt eines.
    Irgendwie wirste die Daten ja speichern, und wenn das eine Db, ein Dataset oder EntityFramework ist, dann können diese Dinge dir auch ein ER-Diagramm generieren.
    Wenns keins von dem ist, ist schlecht, weil ich versteh zwar nix von Geocachen, aber es scheinen da verschiedenerlei Objekte herumzufahren, die in bestimmten Beziehungen zueinander stehen.

    Teams, Aufgaben, Stages - das hängt doch miteinander zusammen.
    Und diese Zusammenhänge muss man korrekt abbilden, sonst ist ein Proggi eiglich nicht zu gebrauchen.

    In irgendeiner Weise bildet jedes Programm ein Datenmodell.
    Die Frage ist nur, ob es dazu erprobte Infrastruktur verwendet oder iwas Selbstgebasteltes.
    (Und Hauptfrage ist natürlich, ob das Modell - wie auch immer umgesetzt - ühaupt richtig modelliert)
    @ErfinderDesRades DB, Dataset, EntityFramework... Die ist bewusst das es ein PHP Script ist?

    Also, nochmal hierzu...

    Team meldet sich an einer Stage an, damit ist bekannt welche Stage und die TeamID wird bekannt.
    Nun geht es nur darum abzufragen, war das team schon hier, war es zuvor an der richtigen Stage und hat es keine Stage zuvor übersprungen.

    Aufgelistet werden die Daten in der DB-Table "teams"

    Noch jemand eine Idee?
    Nein! Doch! OHH!
    Ich verstehe den ErfinderDesRades schon...

    Besteht die ganze DB nur aus den drei Tabellen?

    Sehe ich das richtig, dass jedes Team eine Zeile hat, und alle Stages als Spalten in der Teamzeile stehen?
    Eine Aufgabe entspricht einer Stage?

    Wenn ich das jetzt richtig vermute, sollten die Stages in einer eigenen Tabelle stehen,
    und zwischen Team und Stage eine Zwischentabelle eingefügt werden (nennt sich Normalisierung).

    Mir ist nicht klar wo die Abkürzung passieren kann?
    Wenn jemand an Stage1 ankommt und den richtigen Code eingibt,
    bekommt er die nächste Aufgabe, oder nicht?
    Wenn alle Aufgaben vorher verteilt wurden, könntest du nach dem Eingeben des korrekten Codes
    einen Teil des nächsten Codes anzeigen - damit sind die Teams gezwungen der Reihe nach vorzugehen.

    Man könnte auch beim Team eine Spalte mit der letzten gelösten Aufgabe einführen.
    Der Eingabe des Codes wird verweigert, wenn die Aufgabe nicht die nächste ein der Reihenfolge ist.
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:
    nö - war mir nicht bewusst, ändert aber nicht viel.
    IMO musst du dein Datenmodell eindeutig kommunizieren, sonst kann man (IMO) nicht qualifiziert helfen.
    Ein ER-Diagramm wäre eine Möglichkeit, dein Datenmodell eindeutig kommunizieren.
    Und hätte man Dataset oder EF wäre es auch ein Klacks gewesen, eines zu erstellen.

    Steht denn eine Datenbank hinter deinem php-script?
    Deren genaue Struktur gälte es zu kommunizieren: alle Tabellen (und deren Funktion), alle Spalten (und deren Funktion)

    So aus freier Rede kann ich zumindest mir kein Bild machen. In post#1 tauchen 3 Tabellen auf: teams, aufgaben, code - sind das Datenbank-Tabellen?
    In deiner freien Rede ist von Stationen und Stages die Rede - sind das auch Tabellen?

    Gibt es noch weitere Tabellen, die bislang noch nicht erwähnt wurden?

    samson schrieb:

    @Mandy in der Tabelle Teams gibt es das doch schon...
    Stage1, Stage4, Stage8, Stage11 und 14
    Schau dir die Screenshots an aus dem ersten Post

    Das habe ich gesehen, und rein aus dem Gefühl heraus gemeint, dass diese Felder herausgezogen gehören.
    In der vorgeschlagenen Zwischentabelle kannst du die Aufgabennummer mitführen und siehst mit einer einzigen Abfrage, ob die der Reihe nach abgearbeitet werden.

    Gibt es immer genau diese 5 Stages?
    Müssen die immer in der Reihenfolge der Nummern im Namen ausgeführt werden?
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:

    Mandy schrieb:

    samson schrieb:

    @Mandy in der Tabelle Teams gibt es das doch schon...
    Stage1, Stage4, Stage8, Stage11 und 14
    Schau dir die Screenshots an aus dem ersten Post

    Das habe ich gesehen, und rein aus dem Gefühl heraus gemeint, dass diese Felder herausgezogen gehören.
    Ja, dem täte ich unbedingt zustimmen.
    Aber ich bin sehr pessimistisch, ob man mit dem TE in eine Diskussion seines Datenmodells einsteigen kann - meine diesbezüglichen Versuche sind gescheitert, und mein letzter Post wird sogar komplett ignoriert.
    Auch wird der TE die Notwendigkeit einer Datenmodell-Änderung nicht einsehen wollen - weil bislang funktioniert ja alles perfekt!