Order system

Sharkoon

Mitglied
Hallo zusammen,

ich habe eine frage zwar möchte ich ein script schreiben, wo ich jemand eine Aufgabe übersende (nur er kann die Aufgabe sehen und bearbeiten). Wenn der andere ein Auftrag erhalten hat, kann er erst wieder ein neuen Auftrag erhalten wenn er den alten als erledigt angegeben hat.

Zudem soll derjenige der ein Auftrag erhalten hat eine Benachrichtigung erhalten, dass ein neuer Auftrag vorliegt.

ich möchte keine komplett Lösung eher wie kann ich das am besten anstellen?

Über Ideen oder evtl examples wäre ich sehr dankbar.
Grüße
 

Zvoni

Erfahrenes Mitglied
hmmm..... erste Idee (in "Datenbank"-Sprache):
Du hast ne Tabelle "User" und eine Tabelle "Aufgaben", welche über eine (dritte) Verknüpfungs-Tabelle in ein "m:n"-Szenario verbunden werden. (Und ja, ich weiss, das ganze lässt sich auch als "1:n" darstellen, aber dann können keine ForeignKey-Constraints genutzt werden).

Die genannte Verknüpfungs-Tabelle stellt alle aktiven (zugeordneten) Aufgaben/User-Kombinationen dar.
(und jede Aufgabe bzw. jeder User darf dort max. einmal vorkommen)

Wird ein Auftrag von einem User fertiggestellt, kann in einem weiteren Feld in "Aufgaben" z.B. das Flag "erledigt am", "erledigt von" usw. gesetzt werden, danach diese Aufgabe aus der Verknüpfungstabelle löschen

Heisst für das Zuweisen von "freien" Aufgaben an User:
Aus dem Pool "verfügbare Aufgaben" werden nur diejenigen angezeigt, welche KEINEN Eintrag in der Verknüpfungstabelle haben ODER keinen Eintrag "erledigt XXX" haben

Heisst für das Einsehen von Aufgaben durch einen User:
Der User sieht nur die Aufgabe, welche in der Verknüpungstabelle existiert

In der Tabelle User gibt es ein weiteres Feld namens "EMail", bei welchem ich es dir überlasse zu raten, wofür man das benutzen könnte (im Sinne der aufgabenstellung).

Ich denke ich habe jetzt einige eindeutige Andeutungen hinsichtlich SQL etc. gemacht.....

Die Darstellung mit PHP ist jedoch mal gar nicht meine Baustelle
 

Sharkoon

Mitglied
Also kurz und knapp es werden 2 Tabellen angelegt, also eigentlich nur ein da es die Tabelle User bereits existiert. Es wird an diese ID des User eine Aufgabe übergeben.

Ich gebe einem User eine Aufgabe ab diese wird Ihm via seiner eindeutigen ID übergeben bzw eingetragen.
Gut das ist verständlich.

Auch das mit den Pool "verfügbare Aufgaben" ist sinnig und sollte eigentlich gut machbar sein.

Und stimmt habe ich nicht dran gedacht könnte die Aufgabe als E-Mail via Php übersenden, dass ist ja kein Hexenwerk.

Ich danke dir vorab, sollte ich jetzt etwas falsch verstanden haben bitte sagen :D
 

Zvoni

Erfahrenes Mitglied
Ich habe es oben als "m:n"-Szenario dargestellt.
Und wie auch erwähnt, könnte man es auch als "1:n" darstellen, also nur mit zwei Tabellen (User und Aufgaben, mit User das "1", Aufgaben das "n"), jedoch mit dem "Nachteil", dass du keine Fremdschlüssel-Funktionalität nutzen kannst (Integrität, ON DELETE CASCADE usw.)
Mit nur zwei Tabellen ist es im Prinzip ein "1:1" bzw. ein "1:0" Modell
In Tabelle Aufgaben hast du z.B. ein Feld "ZugewieseneUserID", welches leer (NULL) ("verfügbare Aufgabe") oder eben eine UserID (und diese halt eben auch nur einmal, SOLANGE die Aufgabe nicht abgeschlossen ist --> z.b. ein Feld "erledigt")

Aircode (ungetestet):
Zeige "verfügbare" User an.
SQL:
SELECT DISTINCT U.ID, U.UserName, U.EMail, A.ZugewieseneUserID, A.Erledigt
FROM MyUsers AS U
LEFT JOIN MeineAufgaben AS A
ON
U.ID=A.ZugewieseneUserID
WHERE ISNULL(A.ZugewieseneUserID) OR NOT (U.ID=A.ZugewieseneUserID AND NOT A.Erledigt)
Zeige "verfügbare" Aufgaben an:
SQL:
SELECT A.ID, A.Beschreibung
FROM MeineAufgaben AS A
WHERE ISNULL(A.ZugewieseneUserID)
Zeige "aktive Aufgabe" des Users an:
SQL:
SELECT A.ID, A.Beschreibung, A.ZugewiesenDatum
FROM MeineAufgaben AS A
INNER JOIN MyUsers AS U
ON
U.ID=A.ZugewieseneUserID
WHERE NOT A.Erledigt AND U.ID=12345
 
Zuletzt bearbeitet: