EKKi: Idee wie ich das in die Datenbank bekomme

Beitrag lesen

Mahlzeit ToshiOzumi,

Also Ich habe ein PHP Array mit den Tätigkeiten.

... musst also jedesmal Programmcode ändern, wenn sich die Anzahl, Bezeichnung usw. der Tätigkeiten ändert. Im Hinblick auf Wartbarkeit geht das nur haarscharf an einem GAU vorbei.

Im Moment steht es mehr
oder weniger fest wie viele es sind, kann sich aber in der Zukunft ändern.

Dann gibt es IMHO keine Alternative zu einer hier im Thread bereits mehrfach skizzierten n:m-Beziehung mittels dreier Tabellen - eine enthält die Unternehmen, eine alle zur Verfügung stehende Tätigkeiten und eine für jede Tätigkeit, die ein Unternehmen ausübt, einen Eintrag mit der jeweiligen Unternehmens- und Tätigkeiten-ID (sinnvollerweise mit einem UNIQUE-Constraint auf die Kombination beider Spalten).

Wenn Du Dich jetzt fragst, wie Du diese Information aus der Datenbank ins HTML-Formular und von da wieder in die Datenbank bekommst:

Angenommen, Deine Tabellen sehen ungefähr so aus:

Tabelle "Taetigkeit":
 ID | Name
----+---------
  1 | Tiefbau
  8 | Rohbau
 15 | Zimmer

Tabelle "Unternehmen2Taetigkeit":
 UnternehmenID | TaetigkeitID
---------------+--------------
            11 |            1
            11 |           15
            23 |            1
            47 |            8
            47 |           15

Dann könntest Du durch geeignete Datenbankabfragen und PHP ungefähr folgenden HTML-Code (für das Unternehmen mit der ID 11) erzeugen:

<ul>  
  <li><input type="checkbox" name="taetigkeit[1]" id="taetigkeit_1" checked="checked"><label for="taetigkeit_1">Tiefbau</label></li>  
  <li><input type="checkbox" name="taetigkeit[8]" id="taetigkeit_8"><label for="taetigkeit_8">Rohbau</label></li>  
  <li><input type="checkbox" name="taetigkeit[15]" id="taetigkeit_15" checked="checked"><label for="taetigkeit_15">Zimmer</label></li>  
</ul>

Nach dem Abschicken des Formulars musst Du dann einfach nur in PHP das Array namens "$taetigkeit" verarbeiten: für alle Einträge, die dort enthalten sind, muss ein entsprechender Datensatz in der n:m-Tabelle enthalten sein - weitere dürfen nicht existieren.

Falls Du bei der Umsetzung auf Probleme triffst, wird man Dir hier sicher helfen können ... :-)

MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|