Deutsche Umlaute in SQL QUERY umwandeln?

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

  • #16
    ich nehma an, das select, dass du jetzt gepostet hast, liefert die folder korrekt umgewandelt, aber name nicht?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #17
      Nein.

      <QUOTE>
      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.
      </QUOTE>

      Das Problem ist, dass ich sämtlichen DB Inhalt auf Unicode umgestellt habe, da meine Seite 6 sprachig ist und leider auch grichisch dabei ist. Ein Zeichensatz für alles Sprachen ist einfacher. Leider weiß ich nicht mit dier multibyte extension umzugehen. Finde kein Tutorial darüber.

      Habe mal für das ö ein u eingesetzt. Das funktioniert und er wandelt mir alle u in oe um.
      Zuletzt geändert von antman; 05.10.2004, 09:19.
      Pickel ? Übergewicht ? Depressionen ?
      Brot, Kartoffeln und Milch sind Gift!
      http://www.paleofood.de

      Kommentar


      • #18
        Habe die Lösung gefunden. Dazu musste ich aber in der php das Modul
        extension=php_mbstring.dll manuell aktivieren.
        Ich weiß, man kann das mit der phpini set Methode machen. Aber geht das auch über htaccess oder eine php.ini in dem Ordner der Skripte ?


        PHP-Code:
        $oe mb_convert_encoding("ö""utf-8");
        $res =& $this->_db->query("
        SELECT id,
        REPLACE(REPLACE(REPLACE(REPLACE((CONCAT(c.name_f, ' ', c.name_l)), '"
        .$oe."', '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"
        ); 
        Geil, habe gerade gesehen, dass es bei meinem Provider standardmäßig aktiviert ist. Ein Problem weniger.

        Dennoch wüsste ich es gerne.
        Zuletzt geändert von antman; 05.10.2004, 10:21.
        Pickel ? Übergewicht ? Depressionen ?
        Brot, Kartoffeln und Milch sind Gift!
        http://www.paleofood.de

        Kommentar


        • #19
          Ich werde noch irre. So geht es dann schon wieder nicht:

          Notice: Array to string conversion in D:\utf\classes\_project\den.class.php on line 70

          Notice: Array to string conversion in D:\utf\classes\_project\den.class.php on line 71

          PHP-Code:
          $search mb_convert_encoding(array("ä""Ä""ü""Ü""ö""Ö""ß"), "utf-8");
          $replace mb_convert_encoding(array("ae""ae""ue""ue""oe""oe""ss"), "utf-8");
                                          
          $res =& $this->_db->query("
          SELECT id,
          LOWER(CONCAT(c.name_f, '_', c.name_l)) 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"
          ); 
                  
                          
          while(
          $row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
              
          $row['folder'] = str_replace($search$replace$row['folder']);
              
          $employees[] = $row;

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

          Kommentar


          • #20
            Original geschrieben von antman
            Ich werde noch irre.
            nein, das bist du schon.
            andernfalls hätte dir ja beim blick ins manual auffallen müssen, welche art von parametern die funktion mb_convert_encoding() erwartet.

            tipp: nein, es sind keine arrays.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #21
              lesen mach klug:
              http://de3.php.net/manual/en/functio...t-encoding.php

              Kommentar


              • #22
                Da könntest du recht haben. Fühle mich auch schon irre.

                Wie wäre es hiermit ?

                http://www.php.net/manual/en/functio...-variables.php

                PHP-Code:
                $search = array("ä""ü""ö""ß");
                $replace = array("ae""ue""oe""ss");
                $interenc mb_internal_encoding("utf-8");
                $interenc mb_convert_variables($interenc"ISO-8859-1"$search$replace);


                $res =& $this->_db->query("SELECT id,
                LOWER(CONCAT(c.name_f, '_', c.name_l)) 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"
                ); 
                                                                                                                            
                if (
                DB::isError($res)) {
                    die(
                $res->getMessage());
                }
                                
                while(
                $row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
                    
                $row['folder'] = str_replace($search$replace$row['folder']);
                    
                $employees[] = $row;

                Klappt aber auch nicht:

                Warning: mb_convert_variables(): Unknown encoding "1" in D:\utf\classes\_project\den.class.php on line 73
                Pickel ? Übergewicht ? Depressionen ?
                Brot, Kartoffeln und Milch sind Gift!
                http://www.paleofood.de

                Kommentar


                • #23
                  Original geschrieben von asp2php
                  lesen mach klug:
                  http://de3.php.net/manual/en/functio...t-encoding.php
                  Junge, da waren wir schon . Bist spät dran heute.
                  Die ist nur für Strings gedacht. Habe ich mittlerweile auch schon rausgefunden. asp, du bist doch normalerweise der DB Gott.

                  Hast du keine Lösung ?
                  Zuletzt geändert von antman; 05.10.2004, 11:27.
                  Pickel ? Übergewicht ? Depressionen ?
                  Brot, Kartoffeln und Milch sind Gift!
                  http://www.paleofood.de

                  Kommentar


                  • #24
                    Original geschrieben von antman
                    Junge, da waren wir schon . Bist spät dran heute.
                    Die ist nur für Strings gedacht. Habe ich mittlerweile auch schon rausgefunden. asp, du bist doch normalerweise der DB Gott.

                    Hast du keine Lösung ?

                    Kommentar


                    • #25
                      Ich meinte hier:

                      http://de3.php.net/manual/en/functio...t-encoding.php

                      waren wir schon. Hat nicht geklappt.
                      Pickel ? Übergewicht ? Depressionen ?
                      Brot, Kartoffeln und Milch sind Gift!
                      http://www.paleofood.de

                      Kommentar


                      • #26
                        und warum machst du nicht einfach so:
                        PHP-Code:
                        $tmp = array("ä""Ä""ü""Ü""ö""Ö""ß");
                        foreach (
                        $tmp as $a$search[] = mb_convert_encoding($a,'utf-8');
                        ... 

                        Kommentar


                        • #27
                          Original geschrieben von antman
                          Klappt aber auch nicht:

                          Warning: mb_convert_variables(): Unknown encoding "1" in D:\utf\classes\_project\den.class.php on line 73
                          du codest ja auch schon wieder ohne sinn und verstand ...

                          PHP-Code:
                          $interenc mb_internal_encoding("utf-8");
                          $interenc mb_convert_variables($interenc"ISO-8859-1"$search$replace); 
                          was gibt mb_internal_encoding() im erfolgsfall zurück?

                          und welchen sinn siehst du darin, diesen wert als ersten parameter an mb_convert_variables() zu übergeben?
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #28
                            So wie asp es geschrieben hat müsste es funktionieren. Sieht logisch aus. Funzt aber nicht. Gibt auch keine Fehlermeldung.

                            PHP-Code:
                            $umlaute = array("ä""ü""ö""ß");
                            $replace = array("ae""ue""oe""ss");

                            foreach (
                            $umlaute as $a) {
                                
                            $search[] = mb_convert_encoding($a,'utf-8');
                            }

                            $res =& $this->_db->query("SELECT id,
                            LOWER(CONCAT(c.name_f, '_', c.name_l)) 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"
                            ); 
                                                    
                            if (
                            DB::isError($res)) {
                                die(
                            $res->getMessage());

                                            
                            while(
                            $row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
                                 
                            $row['folder'] = str_replace($search$replace$row['folder']);
                                 
                            $employees[] = $row;

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

                            Kommentar


                            • #29
                              was heißt: funz nicht

                              schon mal zur Kontrolle aus gegeben:
                              - vor Ersetzung
                              - nach Ersetzung

                              In welchem Browser unter welchem BS zeigst du das Ergebnis an?

                              Kommentar


                              • #30
                                Original geschrieben von asp2php
                                was heißt: funz nicht

                                schon mal zur Kontrolle aus gegeben:
                                - vor Ersetzung
                                - nach Ersetzung

                                In welchem Browser unter welchem BS zeigst du das Ergebnis an?
                                Ausgabe

                                Array
                                (
                                [0] => �
                                [1] => �
                                [2] => �
                                [3] => �
                                )

                                Array
                                (
                                [0] => ä
                                [1] => ü
                                [2] => ö
                                [3] => ß
                                )

                                Firefox 1.0, Win 2000

                                Hmm, dann mach dieses nicht was sie soll:

                                PHP-Code:
                                $row['folder'] = str_replace($search$replace$row['folder']); 
                                Zuletzt geändert von antman; 05.10.2004, 12:29.
                                Pickel ? Übergewicht ? Depressionen ?
                                Brot, Kartoffeln und Milch sind Gift!
                                http://www.paleofood.de

                                Kommentar

                                Lädt...
                                X