| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Ansonsten jenachdem wie oft sich die Daten ändern, cache die abfragen doch einfach
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
| | ||
| Neuer Benutzer Registriert seit: 29.07.2009
Beiträge: 17
PHP-Kenntnisse: Fortgeschritten ![]() | Zitat:
Feld3 --- OptionWert 24 --- Feld4 --- OptionWert 1 Feld3 --- OptionWert 24 --- Feld4 --- OptionWert 2 Feld3 --- OptionWert 24 --- Feld9 --- OptionWert 93 Also die Auswahl "OptionWert 24" bewirkt das in Feld 4 nurnoch die Werte OptionWert 1 und 2 gehen und in Feld 9 nurnoch OptionWert 93. Aber wie stelle ich dann die "Außnahmen" dar? Leider schwer zu erklären, es soll im Prinzip eine Geschäftslogik strukturiert abgelegt werden. Z.B. ein bestimmter Kundenkreis ist immer einem bestimmten Vertriebsteam zugeordnet. Um obige Darstellung zu verwenden also z.B. so: Kundenkreis --- Kleine Kunden --- Vertriebsteam --- Team 2 Kundenkreis --- Kleine Kunden --- Vertriebsteam --- Team 3 Kundenkreis --- Mittlere Kunden --- Vertriebsteam --- Team 9 Kundenkreis --- Große Kunden --- Vertriebsteam --- Team 1 Man wählt also den Kundenkreis "Große Kunden" aus und es wird automatisch das Vetriebsteam "Team 1" ausgewählt (alle anderen Vertriebsteams gehen nicht mehr). Am Besten sogar auch noch umgekehrt, also Auswahl des Vertriebsteams "Team 1" bewirkt das automatisch "Große Kunden" im Feld Kundenkreis ausgewählt wird. Das Problem sind wie gesagt die Verknüpfungen die etwas komplizierter sind bzw. Außnahmen haben. | |
| | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.269
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Was genau wäre eine Ausnahme, welche Art von Bedingungen sind daran geknüpft (zeitliche Abhängigkeit, Anzahl der Kunden, um die sich ein Team bereits kümmert, ..?). Sind diese Ausnahmen nur ausschließender (Team 2 doch nicht) oder auch erweiternder Natur (Großkunden-Teams ohne Arbeit bekommen auch mal Kleinkunden)? Du könntest dir überlegen das ganze Event-basiert aufzubauen. Für Events können sich dynamisch (über DB steuerbar) Komponenten registrieren, die bestimmte Aktionen durchführen. Beispielsweise schmeißt du den Event "onAfterTeamSelection" nachdem du aus der Datenbank die passenden Teams für die Auswahl des Kundenkreises ermittelt hast (über die normale Fremdschlüsselbeziehung kundenkreis->teams). In der Datenbank hast du eine Event-Tabelle, der du dem Event "onAfterTeamSelection" den PHP-Callback "SelectExceptions::harry5pm" zuweist. Dieser bekommt nun die Liste der Teams übergeben und kann entscheiden, dass 17 Uhr vorbei ist und Harry dann schon immer nach Hause gegangen ist, also Team 2 dafür nicht in Frage kommt. Also schmeißt er Team 2 aus dem Ergebnis heraus. Die Zuordnung, SelectExceptions::harry5pm <-> onAfterTeamSelection, könntest du relativ einfach gestalten. Einmal liest du von irgendwoher (DB-Tabelle) alle erlaubten Events aus und über die Reflection-API oder andere Hilfsmittel, listest du die Methoden der SelectExceptions aus. Über DOC-Kommentare könntest du steuern, dass "harry5pm" dort "Harry geht um 17 Uhr heim" heißt. Wenn du eine neue Funktionalität brauchst (Großkunden-Teams mit weniger als 3 betreuten Kunden rutschen auch in die Ergebnisse der Mittleren Kunden), musst du das ganze eben in SelectExceptions implementieren, die Zuweisung zum Event vornehmen, und das ganze ist gebongt. Ich schreib dir nachher mal ein paar Schnipsel dazu an Code. |
| | |
| | ||
| Neuer Benutzer Registriert seit: 29.07.2009
Beiträge: 17
PHP-Kenntnisse: Fortgeschritten ![]() | Zitat:
"Große Kunden" werden immer vom "Vertriebsteam 1" betreut, es sei denn im Feld "Produktklasse" ist "Server" ausgewählt, dann ist nämlich immer Vertriebsteam 9 zuständig, egal wie groß der Kunde ist. Eine "kompliziertere" Verknüpfung wäre z.B.: "Kleine Kunden" werden immer nur dann vom Vertriebsteam 2 oder 3 betreut, wenn der Kunde eine "Installation" beauftragt hat. Also eine zusätzliche UND Verknüpfung der Felder "Vertriebsteam" und "Geschäftsfall". Den Rest deiner Antwort muss ich jetzt noch ein paar mal lesen bevor ich ihn endgültig verstehe, aber danke schonmal für den Codeschnippsel! Bin gespannt!! | |
| | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.269
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Also ganz so komplex wird es nicht sein, aber es ist ein Ansatz (siehe Anhang). Folgende Struktur: Code: classes/Interceptor/ classes/Interceptor/Abstract classes/Interceptor/CoffeeBreak.php classes/Interceptor/HolidayReplacement.php classes/Database.php classes/Employee.php classes/EventDispatcher.php classes/Listener.php classes/Team.php data/employee.txt data/team_has_employee.txt data/team.txt functions/selectHelper.php ajax.php init.php index.php PHP-Code: PHP-Code: Weiterhin wird Peter grundsätzlich durch Steffen ersetzt, weil der im Urlaub ist, das übernimmt die Klasse Interceptor_HolidayReplacement.php. Das Beispiel hat vermutlich garnichts mit deinen Ausnahmen zu tun, aber letztlich ist das Schema das gleiche. Du bekommst eine Auswahl aus dem Dropdown und musst entsprechend Daten zurückliefern, die du aber möglicherweise vorher nochmal manipulieren musst, wenn bestimmte Zustände zutreffen. Durch die Interceptors geht das relativ einfach, auch wenn die konkrete Manipulation der Daten sicherlich professioneller umgesetzt werden könnte (ist eben ein schneller Hack). Für dich interessant ist eigentlich nur der Event-Dispatcher, die Interceptor-Klassen und die Zuordnung in ajax.php. Hier mal die interessanten Parts: ajax.php PHP-Code: PHP-Code: PHP-Code: Geändert von Chriz (03.12.2009 um 23:34 Uhr). |
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | PHP-Code:
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- |
| | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.269
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Im Prinzip kannst du natürlich auch auf Events verzichten und alle Ergebnisse an den Interceptor-Sammler übergeben. Nur muss der halt wissen, was für ein Ergebnis das ist, sonst wird Peter auch nicht zur Weihnachtsfeier eingeladen, wenns ans Verschicken der Kärtchen geht |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| mysql select von 2 tabellen mit variablen felder, zeiträumen, saisons und einer ber.. | xavie | PHP Tipps 2009 | 3 | 12.01.2009 15:31 |
| select felder | Templerschaf | PHP Tipps 2008 | 3 | 04.11.2008 21:22 |
| Select 2 verschiedene Felder aus einer Tabelle/Datenbank | DDogg | Datenbanken | 5 | 26.05.2006 19:23 |
| select felder | HTML, Usability und Barrierefreiheit | 5 | 08.12.2005 16:10 | |
| 2 Select Felder identifizieren | HTML, Usability und Barrierefreiheit | 4 | 29.06.2005 16:18 | |
| Warum manchmal "`" um Felder bei Select | Unbekanntes_Pferd | Datenbanken | 4 | 02.05.2005 14:11 |
| [Erledigt] 2 mal select 1 form | PHP-Fortgeschrittene | 1 | 01.09.2004 20:13 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php datenstruktur, php datenstrukturen, php ajax verknüpfte select felder, datenstruktur urlaub, verknüpfte selects, select felder designen, zend_form_select, javascript daten strukturieren, html select struktur, verknüpfte select, $dispatcher->trigger, javascript select feld ändern keine doppelte auswahl, if php mit select feld, javascript verknüpfte select, php verknüpfte select felder, selectfelder php, select in datenstruktur, datesntrukturen php, verknüpfte select html, php ergebnis von event dispatchern |