ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
316
316
EMPFEHLEN
-
Guten Tag,
ich bin grad dabei zu versuchen einen Kalender zu Programmieren, nun brauch ich mal etwas hilfe. Und zwa speicher ich die start und endzeit des Termines als timestamp in eine mysql datenbank nun möchte ich prüfen ob bereits ein Termin für den Zeitraum angelegt ist bevor ich ein neuen Termin anlege allerdings fällt mir die nötige Mysql Select abfrage nicht ein. Könnt ihr mir helfen?
Noch ein kleines Beispiel:
zb ist bereits ein Termin eingetragen von 18 - 20 Uhr nun möchte ich einen neuen Termin anlegen von 18:45 - 21 Uhr und der Mysql select befehlt soll eben erkennen das die 2 Termine in der Selben Zeit statfinden und dann eben einen fehler ausgeben die Uhrzeiten sind als Timestamp gespeichert mit starttermin und endeterminGeändert von Cannon (06.01.12 um 19:56 Uhr)
-
Mal eine Theoretische Frage: kann ein Termin z.B. 30 Minuten lang gehen, und ein anderer nur 15 Minuten?
Wenn ja, gibt es drei Möglichkeiten:
1) Der Termin (15min) liegt genau in dem Termin (30min)
2) Der Termin (15min) fängt in dem Termin (30min) an, hört aber danach auf
3) Der Termin (15min) fängt vor dem Termin (30min) an, hört aber in dem Termin auf
Entsprechend müsstest du drei Abfragen dazu gestalten:
1)
2)PHP-Code:SELECT *
FROM kalender
WHERE startzeit<='".$startzeit."'
AND endzeit>='".$endzeit."'
3)PHP-Code:SELECT *
FROM kalender
WHERE startzeit>='".$startzeit."'
AND endzeit>='".$endzeit."'
irgendwie kann man die Abfragen sicher verbinden, mit UNION wenn ich mich nicht irre.PHP-Code:SELECT *
FROM kalender
WHERE startzeit<='".$startzeit."'
AND endzeit<='".$endzeit."'
€: Oder man macht es noch einfacher, wie mir gerade einfällt:
Du kannst dann einfach die php-Funktion "mysql_num_rows" benutzen. Wenn die Funktion 0 zurückgibt, ist kein Termin in diesem Zeitraum geplant.PHP-Code:SELECT *
FROM kalender
WHERE (startzeit<='".$startzeit."' AND endzeit<='".$endzeit."')
OR (startzeit>='".$startzeit."' AND endzeit<='".$endzeit."')
OR (startzeit>='".$startzeit."' AND endzeit>='".$endzeit."')
GrußGeändert von Lime (06.01.12 um 19:55 Uhr)
-
06.01.12 20:00 #3
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
danke saftmeister werd es gleich testen
-
scheint irgend wo ein fehler zu sein er gibt jedesmal eingetragen aus auch wenn in dieser zeit bereits ein termin eingetragen ist
hier der code:
und beim Beispiel von Lime sagt er immer vergebenCode :1 2 3 4 5 6 7 8 9 10
$select = mysql_query("SELECT id FROM Sendeplan WHERE start BETWEEN ".$_POST[start]." AND ".$_POST[ende]." OR ende BETWEEN ".$_POST[start]." AND ".$_POST[ende].";"); if(@mysql_num_rows($select) == 0) { mysql_query("INSERT INTO Sendeplan (start, ende, rj, sendung) VALUES ('".$_POST[start]."', '".$_POST[ende]."', '".$_POST[rj]."', '".$_POST[sendung]."');"); echo "eingetragen"; } else { echo "vergeben"; }Geändert von Cannon (06.01.12 um 21:20 Uhr)
-
Ich glaube, du hast gerade das Statement falsch herum geschrieben, sicher bin ich mir aber nicht... wieder so ein Logik******
es sollte glaub ichPHP-Code:start BETWEEN ".$_POST[start]." AND ".$_POST[ende]."
heißenPHP-Code:".$_POST[start]." BETWEEN start AND ende
Du wandelst aber hoffentlich den $_POST[start]/$_POST[ende] erst in einen timestamp um...
-
So wie er es geschrieben hat sollte das schon passen mMn.
Versuch es mal bitte damit:
Btw, sind die Felder `start` und `ende` vom Typ TIMESTAMP oder INT mit einem Unix-Timestamp?PHP-Code:if ( isset(
$_POST['start'],
$_POST['ende'],
$_POST['rj'],
$_POST['sendung']
) ) {
$start = mysql_real_escape_string( $_POST['start'] );
$ende = mysql_real_escape_string( $_POST['ende'] );
$rj = mysql_real_escape_string( $_POST['rj'] );
$sendung = mysql_real_escape_string( $_POST['sendung'] );
$query = mysql_query(
"SELECT COUNT(id) FROM Sendeplan WHERE start BETWEEN ".
"$start AND $ende OR ende BETWEEN $start AND $ende"
) or die ( mysql_error() );
$query = mysql_fetch_array( $query, MYSQL_NUM );
if( $query[0] == 0 ) {
mysql_query(
"INSERT INTO Sendeplan (start, ende, rj, sendung) ".
"VALUES ($start, $ende, '$rj', '$sendung')"
) or die ( mysql_error() );
echo 'eingetragen';
} else {
echo 'vergeben';
}
}
Gruß
-
danke habs nun das erste ging doch nur hat javascript mir einen zu großen timestamp gegegeben hab ihn erst duch 1000 teilen müssen da der wert sonst zu groß wa für die Datenban danke nochmal
Ähnliche Themen
-
MySQL-Abfrage in Kalender einbinden.
Von Biber90 im Forum PHPAntworten: 5Letzter Beitrag: 30.08.09, 18:25 -
[PHP + MySQL] Abfrage gibt nur einen Wert aus
Von Sn4ke16 im Forum PHPAntworten: 3Letzter Beitrag: 17.03.09, 16:37 -
PHP Kalender mit MySQL Datenbank
Von Silentdevil im Forum PHPAntworten: 2Letzter Beitrag: 26.10.08, 14:15 -
Gibt es einen Kalender bei MS Access?
Von nilshermann im Forum Office-AnwendungenAntworten: 2Letzter Beitrag: 04.07.07, 07:38 -
Zugriff auf einen lokalen Outlook-Kalender via C
Von Rene Albrecht im Forum C/C++Antworten: 1Letzter Beitrag: 20.04.04, 09:43





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren