im mom hab ich nich wirklich zeit mich tiefer damit zu beschäftigen

auch wenns in den fingern juckt ^^
aber mal kurz geschaut:
unterer code, erste sql abfrage: am ende fehlt ein '
generell wegen deinem $erstellt: schreib doch einfach NOW(), dann kannste auf die variable pfeiffen ^^
reine logik geschichte: weiß grad nich, wie du es nun handhabst... du hast ja bei projekte die erstellt und die userid spalte. beide beziehen sich auf das erstellt von/am. ich würde die bedeutung der spalten umändern. userid gibt an, wer die letzte änderung veranlasst hat (halt der, der das insert ausgelöst hat, oder eben ein update) und das erstellt bekommt die bedeutung, wann diese änderung war (wird also beim erstellen und bei jeder änderung mit geändert). kannst die spalten ggf auch umbenennen (musste halt dann imcode auch überall ändern). die jetzige bedeutung heist ja eben, dass es von dem und dem erstellt wurde (das datum is erstmal relativ bums).
problem hierbei ist, dass nun jeder user (trotz selber tätigkeit/produkt-kombi) für sich eine "projekt-kopie" anlegt. wenn wir projekt jetzt also so definieren, dass es eben eine tätigkeit/produkt-kombi ist und eben KEINE tätigkeit/produkt/user-kombi (was ich wie gesagt sehr viel sinnvoller fände), dann taucht ein problem auf. der hans bearbeitet ein projekt tätigkeit1/produkt1. der meier macht da auch mit. nun fuhrwerken beide mit ihrer eigenen projekt-kopie in der db rum. beide erstellen jeder für sich einen eintrag in der db, der sich nur durch ihre user-id unterscheidet - das projekt selber ist gleich. wir haben also faktisch ein projekt, aber 2 einträge. wie gesagt, bekommt man ja über die zeiten raus, wer am projekt rumfuhrwerkt, deswegen braucht mans eigentlich beim projekt nich nochmal speichern.
wenn du deinen code oben (also der untere ausschnitt) so laufen lässt, holt dir check diese 2 datensätze aus der db (da du nicht nach der user-id filterst - was ich wie gesagt ok finde, aber dann muss das speichern halt angepasst werden, is ja auch gleich hier, gleich mal schauen ^^), wir bearbeiten aber nur den ersten. jetzt wissen wir aber garnich, ob das der ist, der grad bearbeitet wird -> besagtes problem.
nächstes problem: wir suchen das projekt mit den per formular übergebenen id's für tätigkeit und produkt, statt über die ermittelte prID (damit wäre auch das erste prob aus der welt ^^). hb ich natürlich in der eile gestern nich dran gedacht. weil du möchtest ja, das beide mit editierbar sind. wenn wir aber nach den schon editierten dingern suchen, können wir natürlich kaum erwarten, den ursprünglichen eintrag zu finden. also - ach shit, wir sind ja bei confirm, da gibts noch keine id xD jetz bin ich völlig verwirrt. also nochmal langsam
wenn confirm, geh alle zeilen durch. hier wäre es ganz gesund, erstmal die pflichtfelder zu checken. also tätigkeit und produkt (und eventuell mindestens eine zeit - aber das kann man sich ggf auch schenken). also quasi if isset(post teat, post prod) and beide trim() != "" -> go.
jenau, frage anhand der tät/prod kombi bei der db an (stimmt also doch), ob es diese schon gibt (user wird ignoriert, da irrelevant). wenn es die schon gibt, dann update ggf (sofern änderungen vorliegen) das gerumpel. diesemal wird der user vermerkt, auch die zeit. die projektid ist hierbei die id des anfrage ergebnisses. falls es diese kombi noch ned gibt, inserte sie. auch diesemal wird der user vermerkt, auch die zeit. die projektid ist jetzt die id des letzten inserts.
also soweit hauts mMn hin. dann rödelt er alle tage durch, kontrolliert wieder die eingaben. wurde was eingetragen, schaut er wieder nach, obs diesen eintrag schon gibt. wenn, dann wird der geupdated (sofern sich die zeit geändert hat) - den schritt kannst du btw auch weglsaaen, wenn du magst, weil an und für sich haben wir ja ne gesonderte edit-funktion. kannste aber auch drin lassen, wenn dir diese alternative edit-möglichkeit gefällt ^^ joa, und falls es den eintrag noch ned gibt, wir er erstellt.
klingt für mich schlüssig und sollte funtzen *grübel*
sow, und jetzt die editiererei. hier müssten wir das ganze jetzt auch abändern, dass erst gecheckt wird, obs das projekt schon gibt. wenn es das schon gibt, wird wieder auf unterschiede geprüft und sind unterschiede vorhanden, wird geupdated. nur so kann man den "neuen sinn" (den ich halt irgendwie sinnvoller finde) für userid und erstellt (könnte man umbenennen in changed_by und changed_date oder so) beibehalten. wer zuletzt was dran geändert hat, der wird mit zeit vermerkt.
dann gehts wieder zu der "tages-schleife". in der if würde ich halt wieder auf trim($dauer) prüfen, aber so passt das erstmal. wenn nix eingegeben, lösche (gibts nix zu löschen, macht das ding auch nix - also brauchen wir auch keinen check vorher. aber ansonsten sollte das eigentlich passen *grübel*
die db war auch wieder sinnvoll gefüllt mit daten? weil du hattest ja beim einen versuch die ganzen zeiten gekillt ^^ wenn die immernoch fehlen, wird da ggf nich viel passieren.