Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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???

Geschrieben

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

Geschrieben

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

Geschrieben

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;)

Geschrieben

Ä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

Geschrieben
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

Geschrieben

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!

Geschrieben

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.

Geschrieben
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

Geschrieben

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!

Geschrieben
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.

Geschrieben
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

Geschrieben
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 :D

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...