Vergleich von Zeiten

Boof

Mitglied
Hallo Community,

Ich habe ich ein Script erstellt, das es ermöglicht Termine anzulegen.

Nun sollen ja natürlich die schon vorhandenen Termine nicht einfach überschrieben werden können.

Also habe ich mir gedacht: Hol ich mir einfach schon alle vorhandenen Zeiten aus der Datenbank und vergleiche sie zunächst mit den Zeiten die ich gerade in dem Formular zur Eingabe neuer Termine abgeschickt habe.

Soweit sogut das funktioniert schonmal.

Ich stelle die Zeiten in Sekunden dar.
Zur Verfügung steht die Anfangszeit in Sekunden der schon vorhandenen Termine
und die Endzeit (Anfangszeit+Dauer) der schon vorhandenen Termine.
Dann gibt es noch die Zeiten die bei der Eingabe eines neuen Termins abgeschickt und mit den Zeiten aus der Datenbank vergliche werden. Anfangszeit des neuen Termins und Endzeit des neuen Termins (Anfangszeit+Dauer des neuen Termins) .

Wie könnte ich es bewerkstelligen das die Zeiten richtig verglichen werden ?

Ich habe mir schon folgendes überlegt:

PHP:
$AnfangneuerTermin == $Anfangdatenbank AND $EndeneuerTermin == $Endedatenbank
OR
$AnfangneuerTermin == $Anfangdatenbank AND $EndeneuerTermin < $Endedatenbank
OR
$AnfangneuerTermin == $Anfangdatenbank AND $EndeneuerTermin > $Endedatenbank

Das würde ja immer testen ob die Anfangszeiten übereinstimmen und ob die Endzeit des neuen Termins entweder gleich, größer oder kleiner ist.

Beispiel:
Wenn jetzt aber der neue Termin ein paar Minuten vor dem eingetragenen Termin beginnt und der neue Termin genau in dem eingetragenen Temin endet was dann ?

Es ist ziemlich kompliziert (meine Meinung) das so zu programmieren das es keine Schlupflöcher mehr gibt.

Bitte helft mir ich komm einfach nicht weiter
 
Hallo,
wenn du die Daten mit INSERT INTO in die Datenbank einfügst, werden die Daten nicht überschrieben, sondern es wird für jeden Eintrag eine neue Zeile angelegt.

mfg
forsterm
 
Hi, ja das weiss ich aber es geht um die Zeiten.
Undzwar soll eine Zeit die schon vorhanden ist nicht überschnitten werden sozusagen.
Also ich leg einen Termin an der um 15 uhr anfängt und um 15.10 Uhr endet.
In der Zeit von 15.00 Uhr und 15.10 Uhr soll kein weiterer Termin angelegt werden dürfen.

Gruß
 
Folgendes dürfte wohl hinhaun:
Code:
SELECT COUNT(*) AS count_data
FROM table
WHERE time_start BETWEEN '". $time_start_new ."' AND '". $time_end_new ."'
OR time_end BETWEEN '". $time_start_new ."' AND '". $time_end_new ."'
Du fragst einfach ab, ob ein bereits vorhandener Start- oder Endwert zwischen dem neuen Termin liegt. Mein obiges Beispiel arbeitet dabei mit timestamps.

Sollte das Ergebnis 0 sein, so überschneidet sich der neue Termin nicht mit den vorhandenen.
 
Zurück