SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 21.09.2008, 18:00:37
randybee randybee ist offline
Anfänger
 
Registriert seit: Sep 2008
Alter: 49
Beiträge: 5
Terminplanung: SQL-Abfrage oder PHP

Hallo Zusammen,

ich habe folgendes Problem, mit dem ich schon eine Weile kämpfe. Ich möchte gerne einen Terminplaner Online für einen Salon erstellen. Kunden können über ein Portal einen Termin vereinbaren. Das Problem ist folgendes:

Es gibt eine Tabelle in der DB, die alle Termine (Uhrzeit), die für einen bestimmten Tag belegt sind hält. Die Termintabelle hat die Spaten Start_Zeit und Anfangs_Zeit und repräsentiert die Dauer des gesammten Termins. Beispielsweise hat ein Kunden einen Termin um 7.15 Uhr der bis 7.30 Uhr anhält, also eine Viertelstunde. Ein zweiter Termin ist um 8.00 Uhr eingetragen und geht bis 10.00 Uhr. In diesen Zeiten, also von 7.15 Uhr bis 7.30 Uhr und von 8.00 Uhr bis 10.00 können niemals weitere Termine vergeben werden.

Die Anfangsarbeitszeit des Mitarbeiters im Salon ist an diesem fiktiven Tag bspw. 7.00 Uhr und geht bis 13.00 Uhr.

Wenn ein Kunden nun einen Onlinetermin vereinbaren will(bspw. Trockenhaarschnitt), der 15 Minuten dauert, dann wäre ein Termin um 7.00 Uhr möglich, da der erste Termin erst um 7.15 Uhr eingetragen ist, ein weiterer möglicher Termin wäre dann ab 7.30 Uhr(erster Termin endet 7.30 Uhr) und dann noch zusätzlich um 7.45 Uhr, da der dann bis 8.00 Uhr gehen würde, wo auch der zweite Termin beginnt, der schon in der Tabelle steht.

Weitere Termine wäre dann ab 10.00 Uhr bis 13.00 Uhr, da sonst weiter kein Termine vergeben sind (Arbeitszeit geht bis 13 Uhr). Alle möglichen Termine werden grundsätzlich im Viertelstundentakt vergeben...also müsste der Kunde ab 10.00 alle Termine von 10.00, 10.15, 10.30, 10.45, 11.00 Uhr bis 13.00 Uhr usw. angezeigt bekommen.

Ich hoffe die Anforderung ist etwas klar geworden. Nun ist die Frage, wie kann ich das am Besten umsetzen. Geht das schon sinnvoll über die SQL-Abfrage oder eher in der Weiterverarbeitung mit PHP?

Nochmals die Eingangsparameter die ich habe:

1. Arbeitsbeginn und Arbeitsende des Mitarbeiters
2. Startuhrzeit und Enduhrzeit der schon vorhandenen Termine in einer DB_Tabelle
3. Die Dauer eines gewünschten Termins vom Kunden

Würde bpsw. die Dauer einer Anwenung eines Kunden 2 Stunden dauern, kann kein Termin um 7.00 Uhr (1.Termin ist schon um 7.15) und auch nicht um 7.30 Uhr und 7.45 Uhr vergeben werden, da der zweite Termin schon 8.00 wäre. Demnäch bliebe der erste mögliche Termin, ab 10.00 Uhr übrig(da der zweiter Termin in der DB, um 10.00 Uhr endet).

Wie kann ich das Sinnvoll lösen...wäre über Gedankenanregungen super dankbar.

Liebe Grüße,
Randybee
Mit Zitat antworten
  #2  
Alt 22.09.2008, 09:15:42
Benutzerbild von Indyk
Indyk Indyk ist offline
Member
 
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
Indyk eine Nachricht über ICQ schicken
AW: Terminplanung: SQL-Abfrage oder PHP

Hallo randybee,

sowas lässt sich sicherlich "nur" im MySQL lösen, ist aber ein bisschen tricky. du wirst aber auf php als "Steuermann" nicht verzichten können.

Du musst eine Tabelle a haben in der die Öffnungszeiten gespeichert sind und eine Tabelle b in der die Termine verwaltet werden.

Die erste Prüfung ist relativ einfach, der User übergibt ja die Uhrzeit und die Art des Haareschneidens (die dauer der Art müsstest du dann auch irgendwo hinterlegen)

Jetzt guckst du zu erste in Tabelle a ob der gewünschte Termin BETWEEN der Öffnzungszeiten ist.
Wenn das der Fall ist musst du noch gucken ob BETWEEN Anfang und Ende des Gewünschten Termins ein anderer Termin in Tabelle b liegt.
Wenn nicht ist es klar, kann der Termin übernommen werden, falls doch.. wird es ab hier Tricky.

Falls du nämlich deinem Benutzer jetzt Vorschläge machen willst, wann überhaupt der nächst mögliche Termin vergeben werden kann (was ich für empfehlenswert halte denn kein Kunde will jetzt solange rumprobieren bis es passt -> alternativ (großartige Idee) zeigst du die vergebenen Termine schon an, so das der Benutzer selber entscheiden kann wann es sinn macht einen Termin zu beantragen.

viel erfolg.
Mit Zitat antworten
  #3  
Alt 24.09.2008, 15:56:08
randybee randybee ist offline
Anfänger
 
Registriert seit: Sep 2008
Alter: 49
Beiträge: 5
AW: Terminplanung: SQL-Abfrage oder PHP

Hallo Indyk,

ersteinmal vielen Dank fürs Antworten. Deine Idee, alle schon vergebenen Termine anzuzeigen, fand ich auf den ersten Blick super. Leider bedeutet das, wenn Kunden die einen Termin ausserhalb der schon vergebenen Zeiten vereinbaren wollen (was ja eigentlich richtig und logisch wäre), auch hier wieder eine Prüfung stattfinden muss, ob sich der gewünschte Termin nicht mit schon vorhandenen Zeiten überschneidet. Bspw. sieht der Kunde im Kalender:

7.00 Uhr - Frei
7.15 Uhr - Frei
7.30 Uhr - 9.00 Uhr besetzt
9.00 Uhr - 12.00 - Frei

Wählt der Kunde meinetwegen 7.15 Uhr (ist ja frei) und hat dazu eine Anwendung, wie Dauerwelle ausgewählt (die ca 3 Stunden geht). Kann der Termin nicht gegeben werden, da er sich in diesem Beispiel mit einem schon vorhandenen Terminen überschneidet.

Also wäre es eigentlich schon super, wenn wirklich nur verfügbare Termine angezeigt werden würden.

Probiere zwar immernoch die ganze Zeit rum, aber finde keine Lösung...entweder hab ich einen Knoten im Kopf, oder es ist nicht ganz trivial...Falls noch Ideen kommen...bin offen für alles:-)

Vielen Dank im Voraus
Mit Zitat antworten
  #4  
Alt 24.09.2008, 16:28:32
bitwurst bitwurst ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 51
Beiträge: 30
AW: Terminplanung: SQL-Abfrage oder PHP

hallo randybee

du könntest es ja so die GUI so einrichten, dass nicht einfach nur die freien Termine angezeigt werden, sondern dass sich pro ausgwählter Art der visuelle Terminplan ändert. Also jedesmal wenn ein Benutzer die Art ändert wird der Plan neu berechnet.

Super wäre natürlich wenn du nicht nur nach freien Terminen gehst, sondern etwas lügst und nur Termine vorschlägst die nicht den ganzen Tag zerstückeln, sondern den Tag irgendwie effizient einteilen... Wenn ein vollkommen unberührter Plan vorliegt macht das natürlich keinen Sinn, aber wenn man noch drei Lücken buchen kann evtl. schon. Z. B. wenn es um 9:00 eine 3 Stunden-Lücke gibt könnte man bei einem 30 Minuter-Termin nur 9:00 oder 11:30 zur verfügung stellen...
Spannend was da rauskommt, wenn man den Usern die Planung überlässt. ...vielleicht aber auch nicht so wichtig.
j.

Geändert von bitwurst (24.09.2008 um 16:36:46 Uhr)
Mit Zitat antworten
  #5  
Alt 24.09.2008, 17:45:53
randybee randybee ist offline
Anfänger
 
Registriert seit: Sep 2008
Alter: 49
Beiträge: 5
AW: Terminplanung: SQL-Abfrage oder PHP

Hallo bitwurst,

ich habe über deine Aussage "Spannend was da rauskommt, wenn man den Usern die Planung überlässt" mal realistisch betrachtet. Es ist wahrlich problemmatisch, da im Extremfall in besttimmten Konstellationen an bestimmten Tagen kein Termin zu vergeben wäre, was total unrealistisch wäre.

Bsp:
1. Kunde macht um 8.30 Uhr einen Termin
2. Kunde macht um 10.30 Uhr einen Termin

Gearbeitet wird von 7.00 - 13.00 Uhr.

Ein dritter Kunde will eine Dauerwelle, die 3 Stunden geht. Nach meiner ersten Idee, alle freien Termin anzuzeigen hieße, dass der dritte Kunde keinen Termin bekommen kann, für den bestimmten Tag...da die beiden Termine ungünstig gelegt sind.

Ich werde das Ganze ändern...und mit Terminbestätigung durch den Mitarbeiter ersetzen...Kunden können also erstmal jeden Termin (oder auch 2) wählen.

Ich danke nochmals für die Hilfe und Tipps...

Liebe Grüße
Mit Zitat antworten
  #6  
Alt 24.09.2008, 18:52:58
bitwurst bitwurst ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 51
Beiträge: 30
AW: Terminplanung: SQL-Abfrage oder PHP

Ich war zwar schon ewig nicht mehr beim Frisör, aber wenn die eine Dauerwelle machen, dann sind die doch eh nicht 3 Stunden nur mit dem einem Kunden beschäftigt oder? da werden doch zwischendrin auch andere Kunden drangenommen wenn irgendwas trocknen oder einwirken muss. aber ich weiß es nicht wirklich...
j.
Mit Zitat antworten
  #7  
Alt 25.09.2008, 06:34:42
Benutzerbild von Indyk
Indyk Indyk ist offline
Member
 
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
Indyk eine Nachricht über ICQ schicken
AW: Terminplanung: SQL-Abfrage oder PHP

Hallo randybee,

Zitat:
Hallo Indyk,

ersteinmal vielen Dank fürs Antworten. Deine Idee, alle schon vergebenen Termine anzuzeigen, fand ich auf den ersten Blick super. Leider bedeutet das, wenn Kunden die einen Termin ausserhalb der schon vergebenen Zeiten vereinbaren wollen (was ja eigentlich richtig und logisch wäre), auch hier wieder eine Prüfung stattfinden muss, ob sich der gewünschte Termin nicht mit schon vorhandenen Zeiten überschneidet
ich weiss nicht ob du es mitbekommen hast, aber ich hab die in meinem ersten Beitrag das Stichwort "BETWEEN" verlinkt zu der MySQL Referenz. Mit diesem Befehl ist es ein leichtes zu prüfen ob die gewünschten Termine sich mit vorhanden überschneiden.

Das wirklich schwierige wäre halt dem User Vorschläge unterzubreiten wann sein Termin überhaupt möglich wäre.

Hier vll. nochmal ein Beispiel zum erleutern falls du mit der MySQL Doku nicht klar kommst.

Code:
SELECT * FROM termine WHERE datum BETWEEN '2008-07-04' AND '2008-08-27'
Das würde dir alle Termine zwischen den beiden Daten zurückliefern
Mit Zitat antworten
  #8  
Alt 25.09.2008, 17:18:02
randybee randybee ist offline
Anfänger
 
Registriert seit: Sep 2008
Alter: 49
Beiträge: 5
AW: Terminplanung: SQL-Abfrage oder PHP

Hallo Ihr Zwei,

danke für eure Antworten.
es stimmt...das natürlich während einer 3 Stündigen Dauerwelle Zeit für andere Anwendungen bleibt...allerdings muss das separat abgefangen werden...also während einer 3 Stunden Anwendung, kann nach der ersten halben Stunde ein Termin zwischen 15 und 30 Minuten vergeben werden...aber das sind dann schon wieder Sonderregelungen und soweit bin ich noch nicht.

Das mit dem Between hab ich wahrlich nicht in dem Kontekt mitbekommen...Wenn ich das richtig verstehe...dann müsste ich mir als erstes alle schon vohandenen Termine aus der Termintabelle geben lassen...und dann eine weitere Abfrage starten, die Between nutzt.

Also momentan habe ich in meinem TestArray 2 Termine aus der Datenbank, als Objekt, welches mir Start- und Endzeit der Termine liefern kann und Aufsteigend sortiert ist. Also der frühste Termin als erstes.

1. Termin 7.30 Uhr - 8.00 Uhr
2. Termin 9.00 Uhr - 10.30 Uhr

Die gewünschte Anwendung, die der Kunde ausgewählt hat dauert bspw. 30 Minuten.
Termine zwischen 7.30 Uhr und 8.00 Uhr, sowie 9.00 Uhr und 10.30 Uhr gehen gar nicht, ist ja bereits vergeben.

Termine gingen also um:

7.00 Uhr(= Angangsarbeitszeit), 8.00 Uhr, 8.30 Uhr und ab 10.30 Uhr

In einer Schleife bastel ich dann meinen Query?!

PHP-Code:
for($i=0$i<=count(meinArray); $i++) // Zwei durchläufe
{
$sql SELECT FROM Oeffnungszeiten WHERE Open_Time >= 7.00 AND Open_Time BETWEEN meinArray($i)->getStatZeit() AND meinArray($i)->getEndZeit()

[
B]oder mit Zahlen:[/B]

$sql SELECT FROM Oeffnungszeiten WHERE Open_Time >= 7.00 AND Open_Time BETWEEN 7.30 AND 8.00

Irgendwie glaube ich so wie ich das mache, wird das nicht gehen...müsste eigentlich negiert werden...aber vielleicht ist dann die Richtung schon ganz okay. Was sagt ihr?

Danke für eure Hilfe

Liebe Grüße
Mit Zitat antworten
  #9  
Alt 25.09.2008, 21:04:24
randybee randybee ist offline
Anfänger
 
Registriert seit: Sep 2008
Alter: 49
Beiträge: 5
AW: Terminplanung: SQL-Abfrage oder PHP

Hallo Zusammen,

nochmals Danke für eure Tipps. Konnte alles lösen...bekomme nun wirklich nur die freien Termine, unter Berücksichtigung der gewählten Anwendungsdauer...Man, das geht einfach über SQL...super:-)

Euch noch viel Erfolg

Liebe Grüße
Mit Zitat antworten
  #10  
Alt 26.09.2008, 06:16:27
Benutzerbild von Indyk
Indyk Indyk ist offline
Member
 
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
Indyk eine Nachricht über ICQ schicken
AW: Terminplanung: SQL-Abfrage oder PHP

Hallo randybee,

das freut mich das du es hinbekommen hast, zum Abschluss wollte ich noch sagen das der zweite Termin ja eigt. nicht nur um 8:00 und 8:30 gehen würde, sondern ja auch 8:01...8:08...8:25 , also jede zeit die +30min noch vor dem nächsten Termin ist.

für die Organisation ist es natürlich einfacher wenn du dem Benutzer nur 15min Intervalle anbietest, also 4 mögliche Anfangszeiten pro stunde.
0,15,30,45


Viel erfolg.

EDIT

ach und es wäre doch nett, das du die Lösung die du ja mit Hilfe des Forums erarbeitet hast, auch zum ende hin "veröffentlichst" damit andere die etwas ähnliches machen wollen damit profitieren können.

Geändert von Indyk (26.09.2008 um 06:18:23 Uhr) Grund: s. Edit
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ergebnis einer SQL abfrage in Variable schamhorst PHP Grundlagen 4 15.02.2008 16:38:30
MySQL Abfrage mit PHP ausgeben, wie? PHP-MySQL-Fan MySQLi/PDO/(MySQL) 5 22.05.2006 14:47:23
mit php eine sql abfrage Illuminum PHP Grundlagen 3 14.05.2004 09:06:37
SQL Abfrage Datum dadileo PHP Grundlagen 4 22.04.2004 11:07:15
Abfrage in MySQL und PHP Ich werd noch Bekloppt Fichte PHP Grundlagen 1 17.02.2003 23:33:30


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:36:10 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt