| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 13.11.2005
Beiträge: 2.583
![]() | Mal eine allgemeine Frage: Warum vergibst du überhaupt Flags, um einen Benutzer als "fest gebucht", "Nachrücker" etc. zu kennzeichnen? Wäre es für dein Script nicht möglicherweise ausreichend, anhand der Reihenfolge der Eintragszeit zu ermitteln, ob ein Benutzer noch innerhalb des zur Verfügung stehenden Kontingent liegt oder nicht? Wenn du nun trotzdem bei deinem Weg bleiben möchtest, solltest du dir - MySQL 5.0 oder höher vorrausgesetzt - in der MySQL-Dokumentation das Kapitel über Trigger ansehen: http://dev.mysql.com/doc/refman/5.0/en/triggers.html |
| |
| | |
| Erfahrener Benutzer Registriert seit: 16.02.2006
Beiträge: 303
![]() | Es handelt sich hierbei um ein Buchungssystem, das Usern erlaubt Buchungen vorzunehmen. Dabei ist die Anzahl der möglichen Buchungen pro Event wechselnd. Bei der Buchung selbst gibt es Stadien: vorläufig gebucht, fest gebucht, und Nachrücker User müssen in einem Zeitfenster von zwei Wochen vor dem Eventbegin ihre Teilnahme noch einmal bestätigen. Wird die Teinahme nicht bestätigt fliegt der User aus der Liste und die nächste Person aus der Nachrückerliste rückt nach, der seine Teilnahme kurzfristig auch noch einmal bestätigen muss. Gleichzeitig können User eine gebuchte Veranstaltung löschen. Wird gelöscht können diese User diese Veranstaltung nicht noch einmal belegen. Zudem sind nicht nur Buchungen möglich, sondern auch Merklisteneinträge, so dass der User seine Veranstaltung ähnlich wie in einem Warenkorb vorselektieren kann. Das habe ich mit einem weiteren Status versehen. Allerdings wird dabei nicht mit Sessions gearbeitet sondern mit einem Timestamp und Cronjob, der die Veranstaltung irgendwann automatisch für diese User löscht. Dabei werden Löschungen und Merkungen in der Administration aufgeführt, um ggf. auf diese User zugehen zu können, falls ein Event nicht ausreichend belegt ist. Die Daten sind also nach da, obwohl der User sie ggf. nicht mehr einsehen kann. Gruß Tine |
| |
| | |
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 9.937
![]() | Hallo - interessante Vorlage. Wie weit bist du denn mit deinem Datenbank-Layout - offenbar schon fertig? Ich würde die Datenbank wohl etwa so designen: (der Einfachheit deutsche Bezeichnungen) Code: benutzer id | name buchungen id | benutzer | event | fest_gebucht | beruecksichtigt | geloescht | eintrag (DATE) //einen zusätzlichen Primärschlüssel für (benutzer, event) anlegen events event | max_teilnehmer | termin (DATE) Code: .. WHERE buchungen.event = #EventID# AND buchungen.geloescht = 0 ORDER BY buchungen.eintrag DESC LIMIT 0, events.max_teilnehmer x (zB 4) Tage vor dem Event wird dann geschaut, wieviele freie Plätze es noch gibt (max_teilnehmer minus derer, die bereits fest_gebucht (=1) haben). All diejenigen, die beruecksichtigt = 1 und fest_gebucht = 0 haben, werden geloescht = 1 gesetzt (1 = automatisch, 2 = manuell). Die errechnete Anzahl freier Plätze macht User glücklick, die der Bedingung Code: .. WHERE buchungen.event = #EventID# AND buchungen.beruecksichtigt = 0 AND buchungen.geloescht = 0 ORDER BY buchungen.eintrag DESC LIMIT 0, #freie-plätze# Einen Tag davor würde ich dann nach dem Wühltisch-Prinzip gehen. Wer zuerst kommt ma(h?)lt zuerst. Alle je Interessierten (gelöschte Buchungen (manuell oder automatisch), Merkzettel) aber erfolglosen werden darüber per Mail informiert und können sich dann sofort dafür freischalten. Am Besten noch automatisch auf der Startseite oder in der Event-Leiste einen "noch Plätze frei, sofort-buchen" Button platzieren o.ä. Einen Nachrücker-Flag hast du somit nicht benötigt. Aber so ein Design würde wohl sowieso jeder anders machen. Im Moment gefällt mir mein Layout dafür aber, sehe gerade keine Schwächen. |
| |
| | |
| Erfahrener Benutzer Registriert seit: 16.02.2006
Beiträge: 303
![]() | Nabend, bei deinem Design kann man grundsätzlich nicht meckern. Ich habe wohl nicht richtig aufgepasst. Diese Statusgeschichte ist erst mit dem Wunsch von Bestätigung hinzugekommen. Bis dahin sah das Ganze ungefähr so aus: Code: id | user_id | event_id | status | mail | zeitstempel [Timestamp] | ersteintrag [DATE] Na ja und dann hat sich das daraus entwickelt. Ob ich nun alles noch einmal umstricke oder bei meinem Statusgeschichten beibe oder ob sich das lohnt umzuarbeiten, muss ich noch einmal durchdenken. Es entwickelt sich ja immer weiter. Mit dem Limit hast du mich dann auf die richtige Spur gebracht, das ist das Schlüssel für den Cronjob Gruß Tine |
| |
| | |
| Erfahrener Benutzer Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse: Fortgeschritten ![]() | Hi. Ich würde, glaube ich, eher so rangehen, die einzelnen Aktionen in der Datenbank zu dokumentieren und den Status daraus quasi dynamisch entnehmen. Mögliche Aktionen wären dabei folgende: - vorgemerkt - vorläufig eingetragen - Einladung zugemailt - gebucht - Buchung gelöscht Jede Aktion wird natürlich dem Benutzer und dem Buchungsobjekt zugeordnet und mit der Zeit versehen, zu der die Aktion ausgeführt wurde. Damit hast du den kompletten Verlauf dokumentiert und damit ein Maximum an Information. Auch kannst den Workflow im laufenden Betrieb ändern, beliebige Aktionen hinzufügen (z.B. Absage, zweite Einladungsmail, Zahlungseingang) und bist von dieser großen Anzahl an Stati (gibt ja einige Kombinationsmöglichkeiten) weg. Datensätze für vergangene Veranstaltungen kannst du in eine Archiv-Tabelle kopieren (so oder so). Basti |
| |
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Cronjob: Falsche Ausführung - CPU schuld? | Curanai | Server, Hosting und Workstations | 1 | 18.10.2007 19:11 |
| Variablen in Query automatisch escapen | Maho88 | PHP Tipps 2007 | 10 | 31.07.2007 08:42 |
| php cronjob erstellt keine txt-datei... | MrCavity | Server, Hosting und Workstations | 1 | 14.10.2006 15:57 |
| PHP/MySQL: Query wird nicht ausgeführt | Zergling-new | Tutorials | 5 | 09.05.2006 23:16 |
| [Erledigt] Cronjob mit sehr kleinem Zeitintervall | PHP-Fortgeschrittene | 8 | 25.03.2006 23:05 | |
| query r�cksetzen? | Promaetheus | PHP Tipps 2007 | 15 | 01.12.2005 13:53 |
| Query, was aus einer Tabelle mehrere Summen rausholt | Datenbanken | 3 | 14.09.2005 16:45 | |
| Geht das mit nur einem Query? | Bouni | Datenbanken | 3 | 14.09.2005 09:08 |
| problem bei exec(tar ...) ausführen über cronjob | PHP-Fortgeschrittene | 2 | 06.07.2005 10:58 | |
| verschachtelte MySQL-Abfrage | PHP Tipps 2005 | 3 | 04.05.2005 12:44 | |
| My SQL Abfrage & Ausführung per Cronjob | PHP Tipps 2005 | 1 | 23.04.2005 16:08 | |
| mysql query fehler | Datenbanken | 6 | 19.01.2005 23:44 | |
| mysql update query mit mehreren Tabellen funktioniert nicht | PHP-Fortgeschrittene | 5 | 08.01.2005 16:29 | |
| select query durch if anweisungen splitten | Datenbanken | 6 | 06.09.2004 13:46 | |
| [Erledigt] Query läuft nicht | Datenbanken | 6 | 13.08.2004 21:13 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| verschachtelte buchungssätze, verschachtelte query, php verschachtelte query, tine 2.0 cronjob, cron job select mysql, sql zeile löschen nachrücken, cronjob php datei mit query, cron jevents code, cronjob jevent, php exec crontab freischalten, ein mysql statment per cronjob, datenbanklayout archivtabelle, crontab verschachtelt, quasi dynamisch kontingent, jevents cronjob, http://www.php.de/php-tipps-2006/41536-verschachtelte-query-fuer-cronjob.html, cdatabase verschachtelung query, zum löschen vorgemerkt. per cron löschen, cron verschachtelung, buchungs events php-script |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.