Siechfred: Arrays in MySQL-Datenbank speichern und auslesen

Beitrag lesen

Ok, soweit klar. Ich habe erst jetzt verstanden, dass ihr mit "Kat" wohl Kategorie also ein Schlagwort meintet. Dann wäre diese Tabelle hier sozusagen eine Liste der Schlagworte.

Genau.

Jetzt möchtest Du aus der Tabelle "Bilder" diese zwei Kategorien dem Bild mit der Nummer 3 zuordnen. Dann sähe Deine 2. Tabelle so aus: [...]
Stopp mal, welche Tabelle ist das jetzt? Wir haben ja nun Tabelle1 (da sind alle Bilder gespeichert, inkl. Auflösung) und Tabelle2 (da sind alle Schlagwörter gespeichert). Und diese Tabelle ist dann eine dritte Tabelle, in der bei jedem Datensatz eine Bild ID und eine Schlagwort ID stehen?

Ja. Verwende am Besten sprechende Namen, also z.B. "Bilder" für die Tabelle mit den Bildern, "Kategorien" für die Tabelle mit den Schlagworten und "Zuordnung" für die Tabelle, welche die Verbindung zwischen den Bildern und den Kategorien herstellt. Dann gibt's weniger Missverständnisse :)

Nee, mir ist schon klar wie man einen normalen INSERT macht.
Aber in diesem Fall ist das ja etwas anders.
Angenommen ein User ordnet einem Bild 5 Schlagwörter zu.
Dann ergänze ich die dritte Tabelle (Bild_ID, Schlagwort_ID) jeweils um 5 Einträge.

Willst Du die Schlagwörter nutzerbezogen speichern?

Aber jetzt habe ich ein Problem:
Wenn ein User einem Bild ein neues Schlagwort zuordnen will, muss ich erstmal gucken, welche Schlagworte das Bild hat und überprüfen, ob das Schlagwort nicht schon dabei ist.

Biete dem Nutzer doch einfach bereits verwendete Schlagworte nicht mehr zur Auswahl an, indem Du vor Augabe des Formulars via PHP die aktuell vergebenen Schlagworte abfragst. Wahrscheinlich machst Du doch sowieso eine DB-Abfrage auf die Tabelle "Kategorien", um alle möglichen Schlagworte zu ermitteln, dann selektierst Du nur diejenigen Schlagworte, die in der Tabelle "Zuordnung" zur jeweiligen Bild-ID noch nicht zugeordnet sind (die Links zu den JOIN-Artikeln hast Du ja schon).

Siechfred

--
Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.