 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
05.10.2004, 17:31
|
#1
|
|
TP-Member
Registriert seit: Nov 2003
|
PHP-Stundenplan
Hi,
ich möchte eine Art Stundenplan erstellen. Es sollen sich Leute mit Zeitangaben darin eintragen können. Darunter versteh ich als Beispiel:
05.10.2004
-"Member1" "12:00-14:00"
-"Member2" "03:00-06:00"
-"Member3" "16:00-18:00"
Nun stellt sich mir die Frage, welche Datenbankstruktur ich dazu am besten verwende und wie ich dafür sorgen kann, dass ein Member der sich eintragen möchte nur die Zeiten zur Auswahl hat, die noch nicht "besetzt" sind.
Kann mir jemand dabei helfen? 
|
|
|
06.10.2004, 11:37
|
#2
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
ID userid zeit
so würde ich die DB gestallten..
Und dann mit timestamps oder mit der date sache, die mysql als datentypen unterstützt..
Bei Timestamps ist das vergleichen der Zeiten einfacher, aber du musst erstmal aus einem eingegeben Datum eine timestamp machen.
Beim anderen hast du den Vorteil, dass du nix umwandeln brauchst, da weiss ich aber nicht genau, wie das mit den Vergleichsfunktionen aussieht.
Ob man das erst alles mühsam auseinanderfummeln muss, oder ob das direkt auch unterstützt wird..
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
06.10.2004, 12:48
|
#3
|
|
TP-Specialist
Registriert seit: Mar 2001
Ort: NDS
|
id userid taskid datum startzeit endzeit
würde ich machen. Zumindest nach deinen Aussagen, da man so schnell und einfach nach datum sortieren kann.
Beim Anzeigen eines Tages würde ich dann alle Zeiten eines Datums lesen und den Bereich als gesperrt anzeigen lassen. Bei den Bereichen wo die userid auch der userid des aktuellen Users entspricht kann man dann dem User über die taskid auch sein Stundeninhalt anzeigen lassen. (vergleichbar mit dem Outlookterminplaner!)
__________________
the0bone
Wissen ist Macht, nichts Wissen macht nichts!
Geändert von the0bone (06.10.2004 um 13:36 Uhr).
|
|
|
06.10.2004, 13:28
|
#4
|
|
TP-Member
Registriert seit: Nov 2003
|
Hi!
Danke schonmal für die guten Tips!
Ich habe nun als Feldtyp für das Datum "Date" (2004-10-06) genommen, da Timestamp ja 14-Stellig ist, und ich dann mit PHP etwas in der Art $datum = date('Ymd000000') erstellen müßte - was ja eigentlich unnötig wäre.
Das nächste Problem ist jetzt, dass es sich ja nicht nur um einen Zeitpunkt, sondern um Zeitspannen handelt. Also z.B. 14.00 - 16.00 Uhr.
Ist es sinnvoll, dafür zwei Felder zu erstellen, also "von" und "bis" oder sollte ich das in ein Feld, getrennt durch ein "-" schreiben und später exploden?
Wenn die Leute sich später eintragen, sollen sie aus z.B. einem <select>-Feld die Uhrzeit auswählen können (01-24Uhr). Wie kann ich denn nun PHP beibringen, dass nicht nur die "von"-Stunden gesperrt sind, sondern auch die Stunden, die zwischen "von" und "bis" liegen?
Sonst würde er ja nur die Anfangszeit markieren. 
Geändert von blaah (06.10.2004 um 13:37 Uhr).
|
|
|
06.10.2004, 13:49
|
#5
|
|
TP-Specialist
Registriert seit: Mar 2001
Ort: NDS
|
Hast recht, brauchst start und end zeit!
Aber wo ist das Problem mit dem Check?
Du musst eine Schleife machen und dieses mit jedem Datenbankeintrag zu diesem Tag prüfen
PHP-Code:
if($zuprüfendestartzeit<$startzeitausDB || $zuprüfendestartzeit>$endzeitausDB){
//startzeit ist ok
}
if($zuprüfendeendzeit<$startzeitausDB || $zuprüfendeendzeit>>$endzeitausDB){
//endzeit ist ok
}
if($startzeitausDB<$zuprüfendestartzeit && $endzeitausDB<$zuprüfendeendzeit){
//Datenbanktermin liegt zwischen den neuen Start und Endpunkt
}
Hoffe es ist richtig, habs jetzt nicht geprüft!
Aber die technik sollte sein:
- Prüfen ob der neue Starttermin nicht im Datenbankzeitraum liegt
- Prüfen ob der neue Endtermin nicht im Datenbankzeitraum liegt
- Prüfen ob nicht der gesamte Datenbankzeitraum im neuen Zeitraum liegt
__________________
the0bone
Wissen ist Macht, nichts Wissen macht nichts!
Geändert von the0bone (06.10.2004 um 16:16 Uhr).
|
|
|
06.10.2004, 14:02
|
#6
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
Alternativ ginge noch die Startzeit und die Dauer einzutragen, aber ich weiss nicht, was von der Verwaltung und der Weiterverarbeitung sinnvoller ist..
Und vor allem, was weniger Aufwand beim Coden macht,..
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
06.10.2004, 14:07
|
#7
|
|
TP-Member
Registriert seit: Nov 2003
|
Hoi!
Den Operator >> kenn ich nicht, was bewirkt der?
Habe mir eben auf die Schnelle etwas gebastelt:
HTML-Code:
$datum = $jahr.'-'.$monat.'-'.$tag;
Die For-Schleife erstellt die Stunden (17-24Uhr)
for($i=16;$i<=24;$i++){
$reserved = mysql_num_rows(mysql_query("SELECT id FROM station WHERE von = '$i.00' AND datum = '$datum'"));
if($reserved > 0){
$playtime = mysql_fetch_array(mysql_query("SELECT von, bis FROM station WHERE von = '$i.00'"));
$playtime = $playtime[1]-$playtime[0]-1;
#$stunden .= '<option style="background-color:#dddddd;" value="'.$i.'">'.$i.'</option>';
$i+=$playtime;
}else{
$stunden .= '<option value="'.$i.'">'.$i.'</option>';
}
}
das scheint mir allerdings stark umständlich und resourcen-fressend, da 24 Abfragen durchgeführt werden müßen. *gg* 
Geändert von blaah (06.10.2004 um 14:10 Uhr).
|
|
|
06.10.2004, 16:16
|
#8
|
|
TP-Specialist
Registriert seit: Mar 2001
Ort: NDS
|
<< = < jajajaja :-D
__________________
the0bone
Wissen ist Macht, nichts Wissen macht nichts!
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:14 Uhr.
|
 |