Steffen19 Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 Guten Tag, ich bin noch relativ neu auf dem Gebiet der PHP Programmierung und stehe vor folgendem Problem: Ich habe 2 Auswahlfelder erstellt: Kalenderwoche <br><select name=Woche onChange="auswahl()"; ></br> <? for ($z = 1; $z <= 52; $z++) if ($z==$Woche or $z == $test2["Wnr"]){ echo "<option selected>".$z."</option>"; } else { echo "<option>".$z."</option>" ; }?> </select> <? $timestamp = mktime(0,0,0,substr($tag, 5,2),substr($tag, 8,2),substr($tag, 0, 4)); echo date("d.m.Y", $timestamp); ?> <p></p> Raeume <select name=Gruppe onChange="auswahl()"> <option value=raum229>Raum229</option> <option value=raum130>Raum130</option> <option value=raum131>Raum131</option> <option value=raum132>Raum132</option> <option value=raum133>Raum133</option> <option value=raum134>Raum 134</option> ------------------------------------------------------------------------------------------------------------ Jetzt hab ich bisher 2 SQL tabellen angelegt! Eine für die KW und eine für die Räume! Jeder Benutzer hat jetzt die Eingabemaske, wo er die Kalenderwoche und den dazugehörigen Raum auswählt ( Raumbelegungsplan), darauf hin soll die komplette Kalenderwoche ausgegeben werden, wo jeder Eintragungen in die Spalten vornehmen und diese abspeichern kann! Es soll also keine Berechtigungen geben! Wie müssen die Abfragen lauten, damit nach Auswahl der beiden Felder die passende editierbare tabelle ausgegeben wird??? Zitieren
kathi008 Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 Hallo, eine Frage: Wie hast du die Tabellen miteinander verknüpft? Zitieren
Steffen19 Geschrieben 10. Februar 2003 Autor Geschrieben 10. Februar 2003 CREATE TABLE `raumplanung` ( `raumid` int(9) NOT NULL default '0', `raum229` char(20) default NULL, `raum130` char(20) default NULL, `raum131` char(20) default NULL, `raum132` char(20) default NULL, `raum133` char(20) default NULL, `raum134` char(20) default NULL, PRIMARY KEY (`raumid`) ) TYPE=MyISAM; # # Daten für Tabelle `raumplanung` # # -------------------------------------------------------- # # Tabellenstruktur für Tabelle `wochentag` # CREATE TABLE `wochentag` ( `Woche` tinyint(4) NOT NULL default '0', `Jahr` tinyint(4) NOT NULL default '0', `ersterTag` date NOT NULL default '0000-00-00', FOREIGN KEY (raumid)REFERENCES raumplanung (raumid), PRIMARY KEY (`Woche`,`Jahr`) ) TYPE=MyISAM; # # Daten für Tabelle `wochentag` # INSERT INTO `wochentag` (`Woche`, `Jahr`, `ersterTag`) VALUES (3, 0, '2000-01-17'), (1, 0, '2000-01-03'), (2, 0, '2000-01-10'), (4, 0, '2000-01-24'), (5, 0, '2000-01-31'), usw. bis Jahr 2010 Zitieren
Jaraz Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 Hi, irgendwie verstehe ich nicht was du machen willst. Bucht man einen Raum immer für eine ganze Woche? Falls nicht, wie willst du mit deinem Modell mehrere Buchungen pro Raum pro Woche realisieren. Ich finde dein Datenmodellansatz sehr kompliziert. Imho macht man eine Tabelle RAUM mit Spalten RAUMID, NAME dann würde ich ne Tabelle Termine machen. Mit timestamp oder datetime anfang und ende und einer Verknüpfung zum Raum. Wann welche Woche ist, und wann welcher Raum belegt ist, findet man dann mit passenden select statements raus. Gruß Jaraz Zitieren
kathi008 Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 CREATE TABLE `raumplanung` ( `raumid` int(9) NOT NULL default '0', `raum229` char(20) default NULL, `raum130` char(20) default NULL, `raum131` char(20) default NULL, `raum132` char(20) default NULL, `raum133` char(20) default NULL, `raum134` char(20) default NULL, PRIMARY KEY (`raumid`) ) TYPE=MyISAM; Ich verstehe immer noch nicht, was du ausgeben willst. Ich als Benutzer wähle die Woche und den Raum und was erscheint dann? Die Woche mit den Wochentagen? Was stehlt der Index 'raumid' dar?Nur einen laufenden Nummer? Was soll in den Feldern 'raumXXX' stehen? Der jeweilige Name des Benutzers? Um deine Frage zu beantworten, braucht man schon mehr Infos;) Zitieren
Spoom Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 Ähmm das ist eher ein SQl Problem würde ich sagen. Also mit MySQl geht das mit: select * from table1, table2 where table1.feld1 = 'abc' && table1.feld2 = table2.feld1 aber nachdem foreign key in der Abfrage vorkommt ist das eine andere DB also musst Du das mit subselect machen schau mal ins Handbuch ... MfG Spoom Zitieren
Jaraz Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 Originally posted by Spoom aber nachdem foreign key in der Abfrage vorkommt ist das eine andere DB Das ist wohl Mysql, Foreign Key Deklarationen werden aber imho bei myisam Tabellen von Mysql einfach ignoriert. Subselects kann man meistens als joins umschreiben. Gruß Jaraz Zitieren
Steffen19 Geschrieben 10. Februar 2003 Autor Geschrieben 10. Februar 2003 also, dann werd ich mal die exakten Infos sagen: Es soll ein Raumbelegungsplan realisiert werden, d.h. ein Lehrer geht auf die zukünftige Seite ( Auswahlfelder ganz oben) und sucht sich ein Raum aus und die Kalenderwoche, in der er unterrichten will! Er soll also sein namen in die Stunden eintragen, in der er den raum besetzen will! Nun muss nach Speichern für alle anderen sichtbar sein, dass wenn sie in der gleichen Stunde und der gleichen Woche in den selben Raum wollen, dass der schon besetzt ist! Es muss also nach Auswahl der KW und Raum eine tabelle erscheinen mit MONTAG;DIENSTAG usw und 10 Datensätze darunter ( Da bis zur 10 Stunde unterrichtet wird) ! Nun soll jeder Datensatz frei editierbar sein! Ich hatte mir die beiden Tabellen nur mal schnell ausgedacht gehabt und bin gern jederzeit bereit andere anzulegen, falls dies nötig ist! Alle 52 KW's müssen ja schließlich seperat zu jedem passenden raum abgespeichert werden können! Ich bedanke mich vorab schonmal für die schnellen Hilfen und falls Fragen sind: Immer her damit! Zitieren
kathi008 Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 Ich finde dein Datenmodellansatz sehr kompliziert. Da stimme ich vollig zu. Du solltest wirklich deine Datenbank überdenken! Zitieren
geloescht_JesterDay Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 also ich hab mir mal kurz was dazu überlegt, ich würde das wohl so machen: 3 Tabellen, 1.: Raeume RaumID: Integer RaumName: String 2: Lehrer LehrerID: Integer LehrerName: String 3: Belegung ID: Integer RaumID: Integer LehrerID: Integer Tag: Integer KW: Integer Jahr: Integer Stunde: Integer Die Verknüpfungen sollten klar sein, Eingetragen wird in die Tabelle Belegungen, Der Raum, welcher Lehrer, welche KW, welche Stunde, und das Jahr, damit das ganze nicht ständig gelöscht werden muss Abfragen kannst du nach KW (das Jahr wird einfach vom Programm als das aktuelle vorbelegt). Die Typen musst du natürlich u.U. noch anpassen, ist nur mal ne kurze Überlegung. Zitieren
Jaraz Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 Originally posted by JesterDay 3: Belegung ID: Integer RaumID: Integer LehrerID: Integer Tag: Integer KW: Integer Jahr: Integer Stunde: Integer Wobei hier die id nicht unbedingt notwendig wäre. Einen PK könnte man aus raumID, tag, kw, jahr, stunde, bilden. Kann denn immer nur eine Stunde gebucht werden? Ansonsten würde ich noch nen Wert Dauer einfügen. Gruß Jaraz Zitieren
Steffen19 Geschrieben 10. Februar 2003 Autor Geschrieben 10. Februar 2003 Ja, das ist ne Überlegung Wert! Ich muss mir die genaue Struktur mal durch den Kopf gehen lassen! Mit Eingabe des genauen Datums hab ich das alles ja schon hinbekommen und es funktioniert tadellos! Jetzt gabs eigentlich nur das Problem, dass ich Datum raus nehmen soll und dafür die Kalenderwochen und Räume als Auswahlkriterium implementieren sollte! Werd mal weitergrübeln! Für weitere Ideen bin ich immer dankbar! Vielen Dank bis hierher! Zitieren
geloescht_JesterDay Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 Originally posted by Jaraz Wobei hier die id nicht unbedingt notwendig wäre. Einen PK könnte man aus raumID, tag, kw, jahr, stunde, bilden. Naja, ich mach das eigentlich meistens so, wenn schon kein eindeutiger Schlüssel dabei ist, mach ich ne ID als eindeutigen Schlüssel. Also eindeutiger Schlüssel ohne mehrere Felder nutzen zu müssen. Ist natürlich keine Pflicht das so zu machen. Zitieren
Jaraz Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 Originally posted by JesterDay Naja, ich mach das eigentlich meistens so, wenn schon kein eindeutiger Schlüssel dabei ist, mach ich ne ID als eindeutigen Schlüssel. Also eindeutiger Schlüssel ohne mehrere Felder nutzen zu müssen. Ist natürlich keine Pflicht das so zu machen. Die Kombination hätte den Vorteil, dass man vorher nicht prüfen muss, ob der Termin schon belegt ist. Man versucht einfach einzufügen und wenn das nicht geht, gibt man ne entsprechende Meldung aus. Bei ner eigenen ID, musst du selber zusehen, das du Termine nicht doppelt vergibst. Ist aber wirklich alles eine Philosophie Frage. Gruß Jaraz Zitieren
geloescht_JesterDay Geschrieben 10. Februar 2003 Geschrieben 10. Februar 2003 Originally posted by Jaraz Bei ner eigenen ID, musst du selber zusehen, das du Termine nicht doppelt vergibst. Wenn es bei der Anzeige schon so geregelt wird, dass in Stunden, die schon einen Eintrag haben nichts mehr eingetragen werden kann kommt man um eine Prüfung beim Posten rum Erst ne Meldung ausgeben, wenn gepostet wird finde ich ein schlechter Stil. Meine Philosophie Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.