Ankündigung

Einklappen
Keine Ankündigung bisher.

Komma im Inhalt eines ENUM Feldes!

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Komma im Inhalt eines ENUM Feldes!

    Hallo!

    Mein grundsätzliches Problem (das mit Sicherheit supereinfach für Profis zu beantwort ist, aber trotzdem NIRGENDWO geschrieben steht!):
    ich habe in einer MySQL-Datenbank ein ENUM Feld und will dort alphanumerische Inhalte als mögliche Werte eingeben. Leider muß ich auch z.B. "V1, V15" als kompletten, zusammenhängenden Inhalt anwählbar machen. Wie gelingt mir das? Denn das Komma mitten im Inhaltsfeld wird immer als Trenner interpretiert!

    Bitte, schreibts mir! Ich vermute, irgendeine einfache Syntax verhindert dieses Fehlinterpretieren, aber ich beschäftige mich erst seit ein paar Wochen mit diesem Thema und weiß halt leider nicht weiter!

    Vielen Dank im voraus,
    Christian
    sigpic

    ··· Das Leben ist zu kurz für ein langes Gesicht! ···

  • #2
    Erklär nochmal wozu du das genau brauchst. Wahrscheinlich ist hier normalisieren sinnvoller. Ansonsten gilt bei SQL: Strings in einfache Hochkomma ' schreiben, dann klappts auch mit den Nachbarn

    Kommentar


    • #3
      Wo ist da das Problem? Wenn du die Tabelle erstellst kannst du doch zum Beispiel ganze einfach folgendes machen.

      Code:
      'V1,V15','anderer_eintrag','noch,ein,eintrag'
      Das funktioniert bei mir einwandfrei!

      Kommentar


      • #4
        Hallo! Erstmal vielen Dank fürs schnelle Reagieren!

        Hier die ausführlichere Beschreibung:

        ich habe eine PHP-Seite, in der ich mittels eines <select>-Pull-Down-Menüs diverse Einträge auswählbar mache.

        Auf der Serverseite habe ich eine MySQL-Datenbank, in der ich in einem Feld, das als ENUM-Datentyp definiert ist, diese Werte hinterlegt habe:

        'wert 1','wert 2','wert n'

        So. Jetzt lautet aber ein Inhalt: "V1, V15"! Siehst Du nun mein Problem? Wenn ich diesen Inhalt einfüge, sieht das dann so aus:

        'wert 1','wert 2','V1, V15','wert n'

        Und nun interpretiert die Datenbank fälschlicherweise nach dem V1, dass ein neuer Inhalt beginnt (eben durch das Komma!).

        Leider funzt Dein Hinweis mit dem Hochkomma ja auch leider nicht, da dieses Zeichen ja schon zum Einklamern der Inhalte benötigt wird! Also: was nun?

        Gruß,
        Christian
        sigpic

        ··· Das Leben ist zu kurz für ein langes Gesicht! ···

        Kommentar


        • #5
          Du musst deine Datenbank normalisieren, in ein Feld gehört nur 1 Wert. Falls du an einer Stelle mehrer Werte brauchst musst du eine Beziehung schaffen

          Kommentar


          • #6
            @ FLOR1AN: ich schreibe vom Feldtyp ENUM in MySQL! Ich weiß nicht, wovon Du schreibst, aber Kommas sind in diesem Feld PRINZIPIELL nicht erlaubt! Trotzdem hoffe ich, dass es (vielleicht mit irgendeiner Syntax) doch irgendwie funzt!

            Trotzdem auch Dir vielen Dank für Deine superschnelle Antowrt!

            Gruß,
            Christian
            sigpic

            ··· Das Leben ist zu kurz für ein langes Gesicht! ···

            Kommentar


            • #7
              Zitat von cycap Beitrag anzeigen
              Du musst deine Datenbank normalisieren, in ein Feld gehört nur 1 Wert. Falls du an einer Stelle mehrer Werte brauchst musst du eine Beziehung schaffen
              Schnelle Antwort, aber leider ZU SCHNELL GELESEN, oder? Mein Problem ist ja gerade, dass V1, V15 genau EIN (in Zahlen: 1) Wert sein soll!

              Trotzdem: vielen Dank!

              Gruß,
              Christian
              sigpic

              ··· Das Leben ist zu kurz für ein langes Gesicht! ···

              Kommentar


              • #8
                Also geht es dir ums schreiben und nicht ums auslesen?

                Kommentar


                • #9
                  Zitat von cycap Beitrag anzeigen
                  Also geht es dir ums schreiben und nicht ums auslesen?
                  Wäre ich jetzt arrogant, würde ich sagen, das ist doch völlig egal! Aber, da ich ja als Anfänger ganz demütig bin, schreibe ich mal vorsichtig zurück: macht es einen Unterschied? Denn vielleicht hast Du ja bei Deiner Nachfrage eine spezielle Idee! Dann: raus damit!

                  Ich will doch nur zwei Dinge erreichen:

                  1.) Der User soll in dem Formular einer WebSeite ein Pull-Down-Menü betätigen können, in dem sich (unter anderem) der Wert V1, V15 als zusammengehöriger, einzelner Wert befindet. Nachdem der User genau diesen Wert ausgewählt hat und das Pull-Down-Menü wieder hochklappt, steht dieser Wert (V1, V15) im Feld und er schickt das Formular ab.

                  2.) Am anderen Ende befindet sich eine MySQL-Datenbank, in der sich logischerweise auch dieser Wert (also: V1, V15) befinden muß - sonst wird die Auswahl des Users doch nicht akzeptiert, oder?

                  Also: bin noch immer für eine Idee dankbar, Gruß,
                  Christian
                  sigpic

                  ··· Das Leben ist zu kurz für ein langes Gesicht! ···

                  Kommentar


                  • #10
                    Ich würde sagen du musst dir was anderes überlegen, denn:

                    Zitat von http://dev.mysql.com/doc/refman/5.0/en/constraint-enum.html
                    A SET value must be the empty string or a value consisting only of the values listed in the column definition separated by commas. For a column defined as SET('a','b','c'), values such as 'd' or 'a,b,c,d' are illegal and are rejected.

                    Kommentar


                    • #11
                      Vielleicht schickst du mal etwas Code, damit wir eventuell sehen, was du erreichen möchtest. Bis jetzt ist mir dein Vorhaben völlig unverständlich. Und wie von Flor1an schon gesagt, funktioniert
                      Code:
                      ALTER  TABLE tabelle ADD enumfeld ENUM(  'xx',  'yy',  'v1,1','ab,cd,efgh.ij'  )  NOT  NULL ;
                      INSERT  INTO tabelle(enumfeld) VALUES ('V1,1'); 
                      UPDATE tabelle sSET enumfeld = 'ab,cd,efgh.ij' WHERE id = 99
                      problemlos.
                      Gruss
                      L

                      Kommentar


                      • #12
                        Zitat von cycap Beitrag anzeigen
                        Ich würde sagen du musst dir was anderes überlegen, denn:
                        Na super! War zwar nicht viel mehr als das ausführlichere Wiedergeben des Manuals, aber trotzdem vielen Dank! Jetzt weiß ich’s eben ganz offiziell…
                        sigpic

                        ··· Das Leben ist zu kurz für ein langes Gesicht! ···

                        Kommentar


                        • #13
                          Zitat von lazydog Beitrag anzeigen
                          Vielleicht schickst du mal etwas Code, damit wir eventuell sehen, was du erreichen möchtest. Bis jetzt ist mir dein Vorhaben völlig unverständlich. Und wie von Flor1an schon gesagt, funktioniert
                          Code:
                          ALTER  TABLE tabelle ADD enumfeld ENUM(  'xx',  'yy',  'v1,1','ab,cd,efgh.ij'  )  NOT  NULL ;
                          INSERT  INTO tabelle(enumfeld) VALUES ('V1,1'); 
                          UPDATE tabelle sSET enumfeld = 'ab,cd,efgh.ij' WHERE id = 99
                          problemlos.
                          Oha! Vielleicht mach ich ja noch einen ganz anderen Fehler: Wenn ich per phpMyAdmin die Werte für das ENUM-Feld eingebe und dort so einen Wert mit Komma eingebe, akzeptiert das die Datenbank zwar, aber es erscheint in der Struktur-Ansicht immer dort, wo ich ein Komma eingegeben habe, ein Zeichen, das so aussieht wie ein y mit Ü-Pünktchen (ÿ). Als Kollation der MySQL-Datenbank-Tabelle habe ich (genau wie bei der Feld-Kollation) latin1_german1_ci angegeben. Liegt vielleicht hier der Hase im Pfeffer?

                          Gruß,
                          Christian
                          sigpic

                          ··· Das Leben ist zu kurz für ein langes Gesicht! ···

                          Kommentar


                          • #14
                            Zitat von samlowry Beitrag anzeigen
                            @ FLOR1AN: ich schreibe vom Feldtyp ENUM in MySQL! Ich weiß nicht, wovon Du schreibst, aber Kommas sind in diesem Feld PRINZIPIELL nicht erlaubt! Trotzdem hoffe ich, dass es (vielleicht mit irgendeiner Syntax) doch irgendwie funzt!
                            Danke das du mich für blöd hältst! Wir versuchen dir hier zu helfen aber anscheinend hast du es ja nicht nötig.

                            Ich habe extra ausprobiert was bei dir anscheinend nicht zu funktionieren scheint. ENUM kann bei mir Werte annehmen die auch ein Komma beinhalten. Getrennt werden die Werte mit ',' wenn du es genau wissen willst.

                            Zitat von MySQL :: MySQL 5.0 Reference Manual :: 1.8.6.3 ENUM and SET Constraints
                            A SET value must be the empty string or a value consisting only of the values listed in the column definition separated by commas. For a column defined as SET('a','b','c'), values such as 'd' or 'a,b,c,d' are illegal and are rejected.
                            Wenn du genau liest handelt es sich hier um den Datentyp SET nicht um ENUM!

                            Kommentar


                            • #15
                              Frieden Flor1an!

                              Bitte nicht direkt beleidigt in die Ecke stellen: so war das überhaupt nicht gemeint!

                              Aber zurück zum Thema: hast Du meinen letzten Beitrag gelesen? Ich bezichtige ich mich ja gerne selbst als nur allzu beschränkt und frage ja gerade daher die Experten: kommt es zu der Wandlung (Komma in ÿ) vielleicht durch eine falsche Datenbank-Einstellung?

                              Gruß,
                              Christian (nach wie vor dankbar für JEDEN sinnvollen Kommentar!)
                              sigpic

                              ··· Das Leben ist zu kurz für ein langes Gesicht! ···

                              Kommentar

                              Lädt...
                              X