ToshiOzumi: Idee wie ich das in die Datenbank bekomme

Hallo zusammen,

Vielleicht kann mir jemand helfen wie ich das am besten lösen kann.
Ich habe ein Formular um ein neues Unternehmen einzutragen. In dem
zum einem allgemeine Angaben stehen, so wie Adresse, Telefon, usw.
und zum anderen Tätigkeiten. Ein Unternehmen kann mehrere Tätigkeiten
machen(ist mit Checkbox gelöst).

Name:   |          |   |x| Text
Adresse |          |   |x| Text
Tel:    |          |   | | Text

Das ganze würde ich gerne in zwei Datenbanktabellen eintragen.
Eins mit Unternehmensnummer, Name, Telefon usw. und das andere mit
Unternehmensnummer und Tätigkeit.

Sollte so in etwa aussehen.

|001|Kabum GmbH|06549 12345|info@kabumgmbh.de|...|...|

|001|Tiefbau|
|001|Rohbau|
|001|Zimmer|

Also die Frage ist jetzt wie könnte ich jetzt in die zweite Tabelle
die Tätigkeiten eintragen? Ich hoffe ich habe mich Mehr oder Wenger
verständlich ausgedrückt.

  1. Also die Frage ist jetzt wie könnte ich jetzt in die zweite Tabelle die Tätigkeiten eintragen?

    Mit einer Abfrage.

    Ich hoffe ich habe mich Mehr oder Wenger verständlich ausgedrückt.

    Ich fürchte nicht, worauf willst du hinaus?

    1. moin,

      Also die Frage ist jetzt wie könnte ich jetzt in die zweite Tabelle die Tätigkeiten eintragen?

      Mit einer Abfrage.

      wie bekommt man den "nur" mit einer abfrage werte in eine tabelle rein ?

      Ilja

      1. Hallo,

        Also die Frage ist jetzt wie könnte ich jetzt in die zweite Tabelle die Tätigkeiten eintragen?
        Mit einer Abfrage.

        wie bekommt man den "nur" mit einer abfrage werte in eine tabelle rein ?

        ich würd' ja INSERT-Statements verwenden :-)

        Freundliche Grüße

        Vinzenz

      2. Also die Frage ist jetzt wie könnte ich jetzt in die zweite Tabelle die Tätigkeiten eintragen?

        Mit einer Abfrage.

        wie bekommt man den "nur" mit einer abfrage werte in eine tabelle rein ?

        Abfrage, als gängige Übersetzung zu "Query" steht nicht - wie viele meinen - nur für den Lesezugriff ;)

        1. moin,

          Abfrage, als gängige Übersetzung zu "Query" steht nicht - wie viele meinen - nur für den Lesezugriff ;)

          lach, man lernt ja nie aus....

          Ilja

          1. Aber der Einfachheit halber werde ich mir angewöhnen von Ausdrücken zu sprechen ;)

            INSERT Query ist vielleicht noch ok, aber INSERT Abfrage ist in der Tat etwas verwirrend ;)

            1. Hi!

              Aber der Einfachheit halber werde ich mir angewöhnen von Ausdrücken zu sprechen ;)
              INSERT Query ist vielleicht noch ok, aber INSERT Abfrage ist in der Tat etwas verwirrend ;)

              Statement/Anweisung passt auf alles.

              Was hältst du davon, dass SELECT auch mit zu den "Data Manipulation Statements" gehört?

              Lo!

              1. Was hältst du davon, dass SELECT auch mit zu den "Data Manipulation Statements" gehört?

                Ist etwas unverständlich, aber so ist das halt :) - wenn man die Mircrosoft SELECT-INTO-Geschichte einbezieht, ist es auch nicht ganz nachvollziehbar, denn zum Standard gehört sie ja nicht.

                Nach diesem Gesichtspunkten wäre SQL anstatt einer deklarativen Abfragesprache eine imperative turingvollständige Sprache, weil es ja genügend nicht standardisierte Erweiterungen des Sprachumfangs gibt, die dieses "Manko" beheben.

              2. Was hältst du davon, dass SELECT auch mit zu den "Data Manipulation Statements" gehört?

                tut sie nur bedinkt, einige ordnen sie dem DQL und nicht den DML zu.

                Ilja

    2. Hallo Suit

      Ich fürchte nicht, worauf willst du hinaus?

      Also Ich Versuchs nochmal. :)

      Mein Problem ist, Wie kann ich bestimmen, das wenn z.B. drei Tätigkeiten
      eingetragen sind, auch drei passende Einträge generiert werden.

      Gruß

      Toshi

      1. entweder 1 Tabelle oder 3 Tabellen.
        Mit 2 Tabellen fällt mir auf die schnelle nichts brauchbares ein.

        Diese Lösung würde ich nutzen wenn sich die Liste NICHT erweitert und es sehr wenige sind.

        1 Tabelle:
        |Unternehmen_id|Name|Adresse|PLZ|Ort|land|...|Tiefbau|Rohbau|Zimmer|
        |001|Test Unternehmen|Sky Island 1|52136|Hochhausen|GER|...|1|NULL|0|

        flexibler mit 3 Tabellen:
        |Unternehmen_id|Name|Adresse|PLZ|Ort|Adress_zusatz|land|...|
        |001|Test Unternehmen|Sky Island 1|52136|Hochhausen|GER|...|

        |Aufgaben_id|Name|
        |001|Tiefbau|
        |002|Rohbau|
        |003|Zimmer|

        |fk_Unternehmen_id|fk_aufgaben_id|
        |001|001|
        |001|003|

        Musst eben nur die Unternehmens ID und die Aufgaben ID in einer dritten Tabelle kombinieren.

  2. Hello,

    Vielleicht kann mir jemand helfen wie ich das am besten lösen kann.
    Ich habe ein Formular um ein neues Unternehmen einzutragen. In dem
    zum einem allgemeine Angaben stehen, so wie Adresse, Telefon, usw.
    und zum anderen Tätigkeiten. Ein Unternehmen kann mehrere Tätigkeiten
    machen(ist mit Checkbox gelöst).

    Name:   |          |   |x| Text
    Adresse |          |   |x| Text
    Tel:    |          |   | | Text

    Das ganze würde ich gerne in zwei Datenbanktabellen eintragen.
    Eins mit Unternehmensnummer, Name, Telefon usw. und das andere mit
    Unternehmensnummer und Tätigkeit.

    Sind die Tätigkeiten (die Beschreibung dafür) formalisiert, also die möglichen Tätigkeiten gelistet? Dann müsste dafür ggf. auch noch eine dritte Tabelle angelegt werden.

    Du hast dann eine M:N-Beziehung zwischen Unternehmen und Mögliche_Tätigkeiten und benötigst die Hilfstabelle dazu.

    Wenn es aber nur ganz wenige tätigkeiten sind und es auch nicht mehr werden sollen, dann reicht ggf. ein passender Spaltentyp (soweit im DBMS vorhanden), wie z.B SET bei MySQL.

    http://dev.mysql.com/doc/refman/5.1/de/set.html

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Tom,

      Sind die Tätigkeiten (die Beschreibung dafür) formalisiert, also die

      möglichen Tätigkeiten gelistet? Dann müsste dafür ggf. auch noch eine
      dritte Tabelle angelegt werden.

      Also Ich habe ein PHP Array mit den Tätigkeiten. Im Moment steht es mehr
      oder weniger fest wie viele es sind, kann sich aber in der Zukunft ändern.
      Das ist übrigens die Fortsetzung zu meinem letztem Tread Bauzeitplan Jetzt
      will ich zu den Entsprechenden Gewerben die Betriebe zuordnen.

      Gruß

      Toshi

      1. 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:|
        1. Hallo

          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.

          Das mit dem Array dürfte nicht so schlimm sein(hoffe ich), ich habe es in
          eine eigene Datei ausgelagert.

          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:

          Ich habe mir in etwas das genau so gedacht, nur das ich anstatt drei
          richtige Datenbanktabellen zwei Tabellen benutze und als Hilfstabelle
          mein Array. Wobei, du hast vielleicht Recht und ich könnte mit Hilfe
          einer dritten Tabelle auch das Formular dynamisch gestalten, so das
          ich bei mehr Tätigkeiten nur die Datenbank ergänzen müsste.

          Hmm, wie stelle ich den das ende eines Arrays fest?

          Toshi

          1. Hmm, wie stelle ich den das ende eines Arrays fest?

            bin ich blöd. :)
            Kann ja einfach mit count() es zählen und so weiß ich wie viel ich habe
            bzw. wann das ende erreicht ist. :)

            Toshi