php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.06.2008, 11:05  
Neuer Benutzer
 
Registriert seit: 16.06.2008
Beiträge: 15
goofreezer befindet sich auf einem aufstrebenden Ast
Standard In Arbeit Status verbessern

Hallo,
Ich habe mir ein kleine Projektverwaltung gebastelt die ich zusammen mit 2 Kollegen nutze um schnell über das Internet an gemeinsamen aufgaben zu arbeiten.

Nun kann es durchaus sein, dass 2 Leute gleichzeitig an einer Aufgabe arbeiten und wenn Person 1 anfängt zu arbeiten und Person 2 5 Minuten später anfängt zu arbeitet und Person1 nochmal 5 Minuten später diese Aufgabe mit neuem Inhalt einstellt und Person2 nochmal 5 Minuten später ebenfalls seine Änderungen postet bleiben ja nur die Änderungen von Person 2 da.
[oje welch ein satz..

Aber ich denke Ihr wisst was ich meine. Wer zu spät postet, (den bestraft das Leben...und) dessen Inhalte werden von dem der später Postet überschrieben.

Nun habe ich mir eine kleine Lösung überlegt, welche meineserachtens aber noch nicht ganz perfekt ist.

Wenn jemand anfängt eine Aufgabe zu bearbeiten wir in ein neues Aufgabenfeld ( nennen wir es mal "inarbeit") der Status von 0 auf 1 gesetzt.

Wenn nun anschließend (bzw. während des postvorgangs) eine 2. Persondie gleiche Aufgabe bearbeiten möchte wird ausgelsen ob das Feld inarbeit auf 1 steht und eine entsprechende Meldung ausgegeben.

Wenn Herr jemand nun fertig gepostet hat setzte ich einfach durch das entsprechende update das Feld inarbeit wieder auf 0 und andere dürfen wieder in diesem Beitrag posten.

Was mich hier nun aber ein wenig stört ist, dass wenn jemand anfängt eine Aufgabe zu bearbeiten und dann aber diese Änderungen doch nicht speichert ( ein durchaus Möglicher Fall-> z.B weil die Session abeglaufen ist, oder er merkt, dass seine Änderungsvorstellungen doch eher schrott waren) wäre der Status von inarbeit auf 1 gesetzt aber dank fehlenden updates wieder zurück auf 0 könnte kein anderer mehr (bzw. er selbst) diesen Artikel bearbeiten.

Hätte jemand eine Idee wie man dieses Problem lösen könnte?! Oder ist mein Lösungsansatz eh nicht so der Bringer?!
Gruß
goodfreezer
goofreezer ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.06.2008, 11:28  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Im Formular ein hiddenfield mit dem datum wann die seite erstellt wurde, in der db ein feld wann das leztte mal was geändert wurde. vor dem eintragen in die db wird überprüft ob seit dem das eigenen formular geöffnet wurde, jemand was geändert hat, wenn ja, wird anstatt zu updaten, 2 formulare angezeigt, eins mit der neuesten version, eins mit den eigenen änderungen, dann kann der user es zusammenführen.

Ansonsten (auch zusätzlich) kommt noch eine history in frage, sprich eine tabelle in der alle änderungen (mit id der aufgabe, info über datum, user etc) gespeichert werden und bei dem eintrag wird einfach nur die ID der letzten Änderung mit eingetragen, man kann sich aber auch die alten anschauen.
robo47 ist offline  
Alt 20.06.2008, 11:49  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Von was für Inhalten reden wir denn? Wäre es nicht sinnvoll, eine echte Projektverwaltungssoftware zu benutzen oder ein geeignetes Dokumentenformat und CVS oder andere Versionierungssysteme?
nikosch ist offline  
Alt 20.06.2008, 16:54  
Neuer Benutzer
 
Registriert seit: 16.06.2008
Beiträge: 15
goofreezer befindet sich auf einem aufstrebenden Ast
Standard

@robo47
danke für Deine Lösungsansätze ; werd mich da die Tage mal daranwagen...

@nikosch77
naja, die meisten projektverwaltungsprogramme die ich kenne sind mir einfach zu überladen,
außerdem möchte ich gerne offen in der Anpassung von eigen Funktionen sein; und zu guter letzt sehe ich das ganze auch ein wenig als Herausforderung an da wa eigenes zu basteln

Inhalte sind eigentlich in der Regel Projekte und zugehörige Aufgaben welche neben einigem Schnickschnack (ala Rechtecheckboxen, Archiffunktion, etc) einen Titel(varchar) und ein Inhaltsfeld(text) besitzen.
goofreezer ist offline  
Alt 20.06.2008, 20:22  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die 0 und 1 flags kannste doch eigentlich lassen. nur anstatt der vollständigen blockierung der aufgabe könntest du eine "ja trotzdem / nein lieber nicht"-abfrage einbauen.
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline  
Alt 21.06.2008, 06:55  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Wie weglassen. Irgendwie muß der aktuelle Bearbeitungsstatus ja zu ermitteln sein.
nikosch ist offline  
Alt 21.06.2008, 07:49  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo, schau mal hierdrauf:
http://en.wikipedia.org/wiki/Optimistic_locking

Ganz praktisch kann das ganze dann so aussehen:

Code:
UPDATE table SET column1 = 'new value' WHERE id = 5
-- jetzt kommt der wichtige Part
AND last_update = 'formerly retrieved timestamp from that column'
Sollte nun jemand in der Zwischenzeit ein UPDATE gefahren haben (und damit auch den Zeitstempel aktualisiert haben), wird das UPDATE abgewiesen (Bedingung schlaegt fehl, affected_rows = 0). "last_update" kann eine TIMESTAMP Spalte mit CURRENT_TIMESTAMP Option sein, MySQL aktualisiert das Feld dann bei einem UPDATE automatisch!

Die weitere Logik, wie dies zu handhaben ist, musst du programmieren. Vielleicht hilft hier TextDiff.

Ein exklusiver Lock ist auch moeglich, entweder ueber die Datenbank selbst, oder eben ueber einen Flag. Nur wie unterscheidest du zwischen einem veralteten Flag und einem Benutzer, der eben etwas laenger braucht, um das Formular zu bearbeiten?

Die oben genannte Loesung ist meiner Meinung nach relativ elegant.
Zergling-new ist offline  
Alt 21.06.2008, 14:37  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von nikosch77
Wie weglassen. Irgendwie muß der aktuelle Bearbeitungsstatus ja zu ermitteln sein.
falls du dich auf das "lassen" beziehst, damit meinte ich dalassen und nicht weglassen
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Image Qualität in PDF Export verbessern Plague PHP Tipps 2006 2 03.03.2006 11:03
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
PHP klappmenü PHP Tipps 2005-2 1 15.10.2005 00:31
Kann auch etwas Arbeit gebrauchen nixdorf Beitragsarchiv 1 26.07.2005 19:39
Mehrzahl von Status? suendesizer Off-Topic Diskussionen 11 23.06.2005 08:17
[Erledigt] Hilfe! Fehlermeldung Apache Status 3221225477 ? Server, Hosting und Workstations 6 12.05.2005 13:12
Design Arbeit Beitragsarchiv 0 02.03.2005 08:14
HTML Arbeit Beitragsarchiv 0 28.02.2005 21:45
Performance verbessern PHP-Fortgeschrittene 14 18.10.2004 23:18
Status Abfrage mrSpok Datenbanken 0 29.09.2004 17:38
Server Status Script JeeZ PHP Tipps 2004 6 27.09.2004 17:44
LKW Fahrer sucht Arbeit bis 40 test022 Beitragsarchiv 1 19.09.2004 19:07
Dienstabfrage Status Mano PHP Tipps 2004 2 10.08.2004 12:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
onlienbefragung status des berufslebens, arbeitsstatus, statusscript bearbeitungsstatus

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.