Deutsche Umlaute in SQL QUERY umwandeln?

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

  • Deutsche Umlaute in SQL QUERY umwandeln?

    Hallo,

    ist es möglich mit Hilfe der Replace Funktion deutsche Umlaute umzuwandeln ?

    http://dev.mysql.com/doc/mysql/en/String_functions.html

    PHP-Code:
    SELECT id
    REPLACE((CONCAT(c.name_f' 'c.name_l) AS name), 'ö' 'oe')
    REPLACE((CONCAT(c.name_f' 'c.name_l) AS name), 'ü' 'ue')
    REPLACE((CONCAT(c.name_f' 'c.name_l) AS name), 'ä' 'ae')
    REPLACE((CONCAT(c.name_f' 'c.name_l) AS name), 'ß' 'ss')
    FROM contacts clnk_company_contact lcc
    WHERE 
    (c.id lcc.id_contact
    AND   (
    c.public = '".$public."'
    AND   (
    lcc.id_company '".$company_id."')
    ORDER BY c.name_f"); 
    So klappt es nicht. Wo liegt der Fehler ?
    Pickel ? Übergewicht ? Depressionen ?
    Brot, Kartoffeln und Milch sind Gift!
    http://www.paleofood.de

  • #2
    Code:
    SELECT id, 
    REPLACE(REPLACE(REPLACE(REPLACE((CONCAT(c.name_f, ' ', c.name_l)), 'ö' 'oe'), 'ü' 'ue'), 'ä' 'ae'), 'ß' 'ss') AS name
    FROM contacts c, lnk_company_contact lcc
    WHERE (c.id = lcc.id_contact) 
    AND   (c.public = '".$public."') 
    AND   (lcc.id_company = '".$company_id."')
    ORDER BY c.name_f
    Wenn schon das so ... im übrigen lass dir die Fehlermeldung ausgeben ... dann kommst Du auch selber auf sowas ... !

    Ich würde allerdings mal schauen ob es nicht einfach reicht den richtigen Charset zu verwenden ...
    Zuletzt geändert von goth; 01.10.2004, 14:46.
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Code:
      SELECT
        id,
       REPLACE(
          REPLACE(
            REPLACE(
              REPLACE(CONCAT(c.name_f, ' ', c.name_l), 'ö' 'oe'),
              'ü' 'ue'),
            'ä' 'ae',
        'ß', 'ss') name
      FROM tabelle
      so sollte es gehen

      aber eventuell wäre es bässer, das in php zu machen, wird dann irgendwie übersichtlicher möchte ich meinen
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Danke, wieder was gelernt. Also das nächste mal schachteln ...

        Ja man sollte meinen, dass es mit php besser klappt. Allerdings nichtg bei mir:

        PHP-Code:
        ...
        $search = array('ä','ü','ö','ß');
        $replace = array('ae','ue','oe','ss');
        $res =& $this->_db->query("
        SELECT id, 
        CONCAT(c.name_f, ' ', c.name_l) AS name, 
        CONCAT(c.name_f, '_', c.name_l) AS folder  
                                           
        FROM contacts c, lnk_company_contact lcc
        WHERE (c.id = lcc.id_contact) 
        AND   (c.public = '"
        .$public."') 
        AND   (lcc.id_company = '"
        .$company_id."')
        ORDER BY c.name_f"
        ); 
                        
        while(
        $row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
            
        $row['folder'] = str_replace($search$replacestrtolower($row['folder']));
            
        $employees[] = $row;
        }

         return 
        $employees;


        Die Datenbankeinträge sind alle in Unicode vorgenommen. Nun bekomme ich ein schwarzes Quadrat nach der Umwandlung.

        Also doch in mysql machen ?

        Zuletzt geändert von antman; 01.10.2004, 15:34.
        Pickel ? Übergewicht ? Depressionen ?
        Brot, Kartoffeln und Milch sind Gift!
        http://www.paleofood.de

        Kommentar


        • #5
          Habe das strlower() mal entfernt. Nun ist die schwarze Box weg.

          Allerdings macht folgende Funktion GARNICHTS.

          PHP-Code:
          $search =  array("ä""Ä""ü""Ü""ö""Ö""ß");
          $replace = array("ae""ae""ue""ue""oe""o""ss");
          $row['folder'] = str_replace($search$replace$row['folder']); 
          Woran kann das liegen?
          Pickel ? Übergewicht ? Depressionen ?
          Brot, Kartoffeln und Milch sind Gift!
          http://www.paleofood.de

          Kommentar


          • #6
            Original geschrieben von antman
            Allerdings macht folgende Funktion GARNICHTS.
            welche funktion? du hast da nur eine code-ansammlung.

            aber ansich sollte der code problemlos laufen. der fehler ist woanders zu suchen. z.b. bei der zuweisung von $row['folder']
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Welche funktion? du hast da nur eine code-ansammlung.
              str_replace()

              aber ansich sollte der code problemlos laufen. der fehler ist woanders zu suchen. z.b. bei der zuweisung von $row['folder'] [/B]
              Was soll damit nicht stimmen. Die str_replace() gibt eine var vom Typ mixed zurück. Diese wird dann wieder row['folder'] zugeordnet.
              Pickel ? Übergewicht ? Depressionen ?
              Brot, Kartoffeln und Milch sind Gift!
              http://www.paleofood.de

              Kommentar


              • #8
                Hallo,

                also ich habe mich entschieden es nun doch in sql zu machen.
                Allerdings gibt es einen Fehler. Wo kann der liegen ?

                PHP-Code:
                $res =& $this->_db->query("SELECT id,
                                                   REPLACE(
                                                    REPLACE(
                                                     REPLACE(
                                                      REPLACE(CONCAT(c.name_f, ' ', c.name_l), 'ö' 'oe'),
                                                       'ü' 'ue'),
                                                     'ä' 'ae'),
                                                   'ß' 'ss') AS name,
                                       CONCAT(c.name_f, '_', c.name_l) AS folder  
                                                   FROM contacts c, lnk_company_contact lcc
                                                   WHERE (c.id = lcc.id_contact) 
                                                   AND   (c.public = '"
                .$public."') 
                                                   AND   (lcc.id_company = '"
                .$company_id."')
                                                   ORDER BY c.name_f"
                ); 
                Zuletzt geändert von antman; 04.10.2004, 15:05.
                Pickel ? Übergewicht ? Depressionen ?
                Brot, Kartoffeln und Milch sind Gift!
                http://www.paleofood.de

                Kommentar


                • #9
                  Original geschrieben von antman
                  Allerdings gibt es einen Fehler. Wo kann der liegen ?
                  wenn du, nach über 200 beiträgen hier, immer noch solche postings verfasst, in denen du die eigentliche fehlermeldung weglässt - dann liegt der fehler in deinem hirn.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Wo könnte ich denken das der Fehler liegt, wenn ich nur das SQL Statement poste.

                    Aber nochmal für wahsaga:

                    DB Error: syntax error
                    Pickel ? Übergewicht ? Depressionen ?
                    Brot, Kartoffeln und Milch sind Gift!
                    http://www.paleofood.de

                    Kommentar


                    • #11
                      Habe den(die) Fehler gefunden.

                      Allerdings funktioniert es immer noch nicht.
                      Die Ausgabe ist immer noch "ä" anstatt "ae".

                      PHP-Code:
                              $res =& $this->_db->query("
                      SELECT id,
                      REPLACE(REPLACE(REPLACE(REPLACE((CONCAT(c.name_f, ' ', c.name_l)), 'ö', 'oe'), 'ü', 'ue'), 'ä', 'ae'), 'ß', 'ss') AS name,
                                                                                  CONCAT(c.name_f, '_', c.name_l) AS folder  
                      FROM contacts c, lnk_company_contact lcc
                      WHERE (c.id = lcc.id_contact) 
                      AND   (c.public = '"
                      .$public."') 
                      AND   (lcc.id_company = '"
                      .$company_id."')
                      ORDER BY c.name_f"
                      ); 
                      Pickel ? Übergewicht ? Depressionen ?
                      Brot, Kartoffeln und Milch sind Gift!
                      http://www.paleofood.de

                      Kommentar


                      • #12
                        Original geschrieben von antman
                        Allerdings funktioniert es immer noch nicht.
                        Die Ausgabe ist immer noch "ä" anstatt "ae".
                        bei name oder bei folder?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Bei Folder.
                          Weiß mittlerweile auch warum.

                          Weil alle Daten in der DB in Unicode gespeichert sind, werden die ö,ä,ü,ß nicht gefunden. In der DB steht dann anstatt eines "ä" ein a| oder sowas.

                          Dieses hat mir jemand erklärt.

                          Es gibt dafür eine extra extension:
                          http://de3.php.net/manual/en/ref.mbstring.php

                          Habe in das Verzeichnis meiner Skripte folgende php.ini gepackt:

                          ; Set default language
                          mbstring.language = Neutral; Set default language to Neutral(UTF-8) (default)

                          ;; Set default internal encoding
                          ;; Note: Make sure to use character encoding works with PHP
                          mbstring.internal_encoding = UTF-8 ; Set internal encoding to UTF-8

                          ;; HTTP input encoding translation is enabled.
                          mbstring.encoding_translation = On

                          ;; Set default HTTP input character encoding
                          ;; Note: Script cannot change http_input setting.
                          mbstring.http_input = pass ; No conversion.

                          ;; Set default HTTP output character encoding
                          mbstring.http_output = UTF-8 ; Set HTTP output encoding to UTF-8

                          ;; Set default character encoding detection order
                          mbstring.detect_order = UTF-8, ASCII, JIS; Specify order



                          Funktioniert nicht. Ich raffe absolut nicht was es mit dieser extension auf sich hat. Könnte sich das mal jemand anschauen ? Bin zu blöd dafür. gebe ich offen zu. Bräuchte Hilfe.
                          Pickel ? Übergewicht ? Depressionen ?
                          Brot, Kartoffeln und Milch sind Gift!
                          http://www.paleofood.de

                          Kommentar


                          • #14
                            Original geschrieben von antman
                            Bei Folder
                            [...]
                            Weil alle Daten in der DB in Unicode gespeichert sind,
                            und ich dachte schon, es liegt daran, dass du bei folder nicht mit REPLACE arbeitest...
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              Hallo happy,

                              oh mann, du hast recht, das ist noch ein zusätzlicher Fehler. Aber das ändert nichts daran. Sonst wäre es mir ja beim Namen aufgefallen

                              PHP-Code:
                              $res =& $this->_db->query("
                              SELECT id,
                              REPLACE(REPLACE(REPLACE(REPLACE((CONCAT(c.name_f, ' ', c.name_l)), 'ö', 'oe'), 'ü', 'ue'), 'ä', 'ae'), 'ß', 'ss') AS folder,
                              CONCAT(c.name_f, '_', c.name_l) AS name  
                              FROM contacts c, lnk_company_contact lcc
                              WHERE (c.id = lcc.id_contact) 
                              AND   (c.public = '"
                              .$public."') 
                              AND   (lcc.id_company = '"
                              .$company_id."')
                              ORDER BY c.name_f"
                              ); 
                              Also du weißt auch nicht, wie man diese multibye extension handhabt?
                              Pickel ? Übergewicht ? Depressionen ?
                              Brot, Kartoffeln und Milch sind Gift!
                              http://www.paleofood.de

                              Kommentar

                              Lädt...
                              X