von Lewi |
Stimmt, hab es korrigiert. |
von m3rlin |
Lewis if-Statement matcht bei
* Der neue Zeitraum begint vor und endet nach dem Bestehenden Zeitraum
|
nicht. Direkt in MySQL hab ich das mal so gemacht
1:
2:
3: |
SELECT id FROM $buchungen_table WHERE NOT ((('$start' < start AND '$start' < ende) AND ('$ende' < start AND '$ende' < ende)) OR (('$start' > start AND '$start' > ende) AND ('$ende' > start AND '$ende' > ende)))
|
Wenn das Statement ein Ergebnis liefert, ist der Zeitraum belegt.
|
von Lewi |
Angenommen, du hast eine Tabelle "buchungen" mit den Spalten "firstday" und "lastday". In dieser ist für jede Buchung eine Zeile enthalten, die Spalten mit den Timestamps des ersten und letzten Tages gefüllt.
$chosen_firstday ist der gewählte erste Tag.
$chosen_lastday ist der gewählte letzte Tag.
Dann:
1:
2:
3:
4:
5:
6: | $result = db_query("SELECT * FROM buchungen");
while($data = mysql_fetch_array($result)) {
if ($chosen_firstday <= $data[lastday] && $chosen_firstday >= $data[firstday]) || ($chosen_lastday >= $data[firstday] && $chosen_lastday <= $data[lastday]) || ($chosen firstday <= $data[firstday] && $chosen_lastday >= $data[lastday]) {
$problem = "1";
}
} |
Die Variable "$problem" kannst du dann entsprechend verarbeiten.
Ist jetzt nicht kontrolliert, sondern nur mal aus dem Kopf abgeschrieben. Falls es Probleme gibt, kannst du dich ja mal melden.
Gruß
Lewi |
von einstein |
Speichere die Zeiten für die Belegung als timestamps. Dann kannst du, ob aus Datenbank oder Array, überprüfen ob der gewünschte Zeitraum in irgendeiner Weise mit dem schon Angemeldeten in Konflikte gerät.
Im Moment fällt mir keine Lösung mit einem if-statement ein - Es gibt aber 4 mögliche Konflikte:
* Der neue Zeitraum liegt innerhalb des Bestehenden Zeitraums
* Der neue Zeitraum begint vor und endet nach dem Bestehenden Zeitraum
* Der neue Zeitraum begint vor und endet innerhalb des Bestehenden Zeitraums
* Der neue Zeitraum begint innerhalb und endet nach dem Bestehenden Zeitraum
Für alle Fälle ein if-statement und im Falle eines Konflikts eine Fehler-Variable belegen...
Wenn du direkt mit mysql Arbeitest wird es auch ein wenig einfacher gehen, aber das Prinzip bleibt ähnlich...
Evtl. gibt es auch eine einfachere Lösung - mir fällt gerade nur keine ein  |
von ATooM |
Hallo,
ich habe folgendes Problem ich habe 2 verschieden Zeiträume d.h. von einem bestimmten Tag bis zu einem anderen bestimmten tag. Nun will ich überprüfen und an ein Bestimmter Zeitraum schon belegt ist....
Also das ganze ist ein MIeterscript (wir gehen jetzt von 1Zimmer aus). Man trägt einen Mieter für einen bestimmten Zeitraum ein. Anschließend trägt man einen 2. ein natürlich können die nicht an einem bestimmten Tag das selbe Zimmer haben..,. Wie kann ich das am besten überprüfen? |