MySQL-Struktur

alxy, das ist Schwachsinn.
Es entspricht NICHT der 3. Normalform, wenn er für jedes Semester eine neue Tabelle macht. Es ist viel besser, eine zusätzliche Spalte mit dem Semester (kann eine fortlaufende Nummer sein, welche du in einer zweiten Tabelle verwaltest [ID -- Semestername]; oder einfach die Jahreszahl)
So kann man später Abfragen, die über mehrere Jahre gehen, besser abarbeiten.
 
Du hast mich falsch verstanden, VIELE SEMSTER = EINE TABELLE, ist doch logisch. Es ist meistens ein schlechtes Datenbankdesign, wenn Spalten oder gar Tabellen dynamisch erweitert werden müssen.
 
Also kann mir jemand konkret sagen, was ich machen muss? (Erstelle Tabelle mit Spalten x und y, auto_increment und dann PHP-Code blablabla...)
 
Achso, ich glaub ich hab dich falsch verstanden.
Was ich verstanden habe: Jahr1 = Tabelle1, Jahr2 = Tabelle2
Was du meintest und was richtig ist:

Tabelle Noten:
ID (INT, auto_increment) -- userID (INT) -- semesterID (INT) -- fachID (INT) -- note (INT)

Tabelle Semester:
ID (INT, auto_increment) -- Semestername (varchar) [z.B. 2012/2013-1]

Tabelle Fach
ID (INT, auto_increment) -- Fachname (varchar)

€: fach vergessen
 
Zuletzt bearbeitet:
Ich hatte das Fach vergessen und nachträglich eingearbeitet.

Was meinst du mit PHP Code? Für was konkret?
Zum Einfügen eines neuen Datensatzes?
Zum Auslesen von bestehenden Einträgen?
 
Genau, wie jetzt der User die neuen Felder "befüllt" und ich diese nachher wieder "echoen" kann. (wahrscheinlich irgendwie WHERE fach = fach_id oder so was)

Also die Query...
 
Alles klar.
Also Tabelle "Fach" musst du selber befüllen, einmalig.
Code:
1 -- Mathematik
2 -- Deutsch
3 -- Englisch
...
Dasselbe mit der Tabelle "Semester". Die musst du immer selber erweitern
Code:
1 -- 2012/13-1
2 -- 2012/13-2

Wenn du dann ein Formular machst, kannst du dort direkt mit den IDs arbeiten:
PHP:
$sql = mysql_connect('host','user','pw');
mysql_select_db('db');

$qry = "SELECT * FROM fach";
$fachQry = mysql_query($qry,$sql);

$qry = "SELECT max(id) FROM semester";
$semQry = mysql_query($qry,$sql);

echo '<form method="post" action="diesedatei.php">';
   echo '<table>';
      echo '<tr>';
         echo '<td>Fach:</td>';
         echo '<td><select name="fach">';
            while($row = mysql_fetch_object($fachQry))
               echo '<option value="'.$row->id.'">'.$row->fachname.'</option>';
         echo '</select></td>';
      echo '</tr>';
   echo '</table>';
echo '</form>';

$semQry ... ist für den aktuellen Semester zuständig... dafür wird einfach die größte ID (letzter Eintrag) gewählt.
$fachQry ... liest alle Fächer aus und wie gezeigt kann man sie dann in eine Select-Box reinschmeißen.

Wie du dann die Werte in die Tabelle kriegst:
SQL:
INSERT INTO noten (userID,fachID,semesterID,note) VALUES ('.$_SESSION['userID'].','.$_POST['fach'].',1,3)

Mein obiges Beispiel ist eigentlich ziemlich sinnlos, fällt mir grad auf. Wird eh als Tabelle gemacht schlussendlich.
Reicht dir das so? Wichtig ist eigentlich nur die Query...
 
Schon mal besser, danke. Jetzt, wie mache ich jetzt die semesterID und die note relativ? was ist diese 1,3 am Schluss?

Zurzeit habe ich das:

PHP:
SELECT id,note,fach FROM noten WHERE user_id = $user ORDER BY fach
jetzt muss ich irgendwie so was machen
PHP:
SELECT id,note,fach,semester FROM noten WHERE user_id = $user AND semester=$selected_semester ORDER BY fach
dieses $selected_semester konnte vorher aus einer Liste ausgewählt werden, und man wurde auf diese Seite verwiesen.
 
Zurück