Antwort #8 am: 23. Januar 2010, 01:21:31
Hallo zusammen, eigentlich komme ich aus dem CMS-Bereich und bin recht neu bei xt (ausführlichere Vorstellung folgt im entsprechenden Bereich
...)
In einem meiner Module hatte ich damals ein ähnliches Problem: Mehrere Autoren und Verlage verwalten, Bücher die mehrere Autoren haben durften und jeder einzelne Autor sollte dem Buch zugeordnet werden können bzw. umgekehrt.
Anstelle einer umständlichen n:m - Beziehung habe ich die Autoren innerhalb der Buch-Tabelle als in einen String umgewandeltes Array gespeichert.
Die Autoren waren im Auswahlfeld mit Mehrfachauswahl, dessen Inhalt z. B. in die Variable $autoren geschrieben wurde.
Die Autoren selbst waren durch IDs eindeutig identifiziert:
Meier: 1
Müller: 50
Schmitt: 12
Zunächst wurde aus dem Array per implode ein String mit dem Trennzeichen [;]. Sollte ja etwas sein, was in keinem Namen vorkommt (also mit Klammern).
Für die Suche mussten aber noch Start und Ende definiert werden: [bos] und [eos] o. ä.
Daraus wurde der String [bos]1[;]50[;]12[eos]
Wird jetzt der Autor mit der ID 1 gesucht, muss die Bedingung lauten:
WHERE autor = '[bos]1[eos]' OR autor LIKE '[bos]1[;]%' OR autor LIKE '%[;]1[;]%' OR autor LIKE '%[;]1[eos]'
Ich weiß, nicht sehr schön, aber schnell umgesetzt und es hat funktioniert.
Um im Buch die Autoren wieder aufzulisten, einfach Start und Ende abschneiden und den String per explode in ein Array umwandeln.
Gruß Johannes