Umlaute maskieren - demaskieren

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

  • Umlaute maskieren - demaskieren

    Hallo,

    ich weiß nicht recht, ob es sich in dieses Forum gehört oder unter php!?

    Folgendes Problem habe ich:

    In einer Tabelle kommt z. B. öfters ein Name mit einem Umlaut vor. z. B. Krämer. Wenn ich diesen Namen maskiert eingetragen habe (Kr& a u m l;mer) dann erhalte ich bei einer Abfrage mit where nachname='Krämer' kein Ergebnis.

    Der andere Fall ist, wenn ich Bäumler so (unmaskiert) in der Tabelle erfasst habe und eine Abfrage nach where nachname='Baumler' stelle, dann bekomme ich auch bei Baumler die Daten von Bäumler.

    Was muss ich tun, damit bei einer Abfrage z. B. Baumler ich auch nur Baumler erhalte und bei Bäumler auch nur Bäumler kommt??

    und wie muss nun der Bäumler in meiner Tabelle erfasst werden - maskiert oder unmaskiert?

    Bitte um Hilfe und vielen Dank im Voraus.

  • #2
    moin,

    normalerweise solltest du die Daten unmaskiert in deiner Datenbank
    speichern - bei der Ausgabe dann mit Hilfe von PHP in die entsprechenden
    HTML-Codes umwandeln.

    Deine einzige Möglichkeit beim Abfragen der vorhanden Daten ist die
    Umwandlung der Sonderzeichen vor der Abfrage.

    PHP-Code:
    WHERE nachname='Krämer' 
    Zuletzt geändert von piep83; 27.01.2006, 12:31.
    Computernotdienst Eisleben
    Softwarelösung für Rechtsanwälte und Notare

    Kommentar


    • #3
      unmaskiert reinschreiben - vorher checken

      Also wenn ich Bäumler unmaskiert in die Tabelle schreibe, dann besteht weiterhin das Problem, dass bei einer Abfrage where nachname='$nachname' - in meinem Beispiel wäre der Inhalt der variable Bäumler - auch die Daten des Baumlers angezeigt werden.

      Wenn ich z. B. ein Formular mit einem Textfeld nachname habe und dort nach den Daten eines bestimmten Mitgliedes suchen will - in dem Fall gebe ich Bäumler ein, dann stimmt ja das Ergebnis nicht, da mir auch die Daten des Baumler auch angezeigt werden.

      Da nützt ein Check des Inhalts der variable $nachname vorher doch auch nichts!??

      Oder wie sollte der check aussehen?

      Kommentar


      • #4
        hallo fan-maec,

        die Umwandlung der Sonderzeichen vor der Abfrage bezog sich
        lediglich auf
        Wenn ich diesen Namen maskiert eingetragen habe (Kr& a u m l;mer) dann erhalte ich bei einer Abfrage mit where nachname='Krämer' kein Ergebnis.
        bezogen auf den "Baumler" bzw. "Bäumler" versuch es mal mit LIKE
        Zuletzt geändert von piep83; 27.01.2006, 12:31.
        Computernotdienst Eisleben
        Softwarelösung für Rechtsanwälte und Notare

        Kommentar


        • #5
          Hallo piep83,

          ich habe

          a) die Einträge der nachnamen in meiner Tabelle alle nicht maskiert und

          b)meine Abfrage, wenn ich dich richtig verstehe, geändert und das = Zeichen mit dem Wort like ersetzt.

          PHP-Code:
          ... where nachname like $nachname .... 
          Wenn ich den Bäumler abfrage, dann kommen nach wie vor auch die Daten des Baumler!

          Mist! So funktioniert es leider auch nicht.

          Das Problem muss doch schon mal irgendwie gelöst worden sein, habe aber weder im Forum noch bei den Tuts nichts gefunden.

          Kommentar


          • #6
            hatte mal wieder ein Brett vor Kopf

            MySql wandelt die deutsche Umlaute intern zur Sortierung um.

            Code:
            ä - ae
            d.h. wenn du die Nachnamen eindeutig suchst mußt du in diesem
            Fall doch die Daten in der Spalte "Nachname" maskieren um diese
            dann eindeutig auszugeben

            PHP-Code:
            Bäumler -> Bämler 
            Vor der Abfrage von "Bäumler" mußt du dann das "ä" maskieren.

            PHP-Code:
            WHERE nachname='Bämler' 
            Bei der Abfrage von "Baumler" sollte dann auch "Bäumler" nicht
            mehr ausgegeben werden.
            Zuletzt geändert von piep83; 27.01.2006, 12:32.
            Computernotdienst Eisleben
            Softwarelösung für Rechtsanwälte und Notare

            Kommentar


            • #7
              Leider funktioniert dein Vorschlag nicht.

              Ich habe einen Eintrag in der Spalte Nachname maskiert und deinen Vorschlag ausprobiert.

              also steht in der Tab Spalte nachname darin

              PHP-Code:
              Bäumler 
              Wenn ich jetzt im Formulartextfeld nachname mich "vertippe" und Baumler eingebe und abschicke

              PHP-Code:
              .... where nachname='Baumler' .... 
              , dann erhalte ich die Daten vom Bäumler, was ja nicht stimmt!

              Kommentar


              • #8
                moin moin,

                etwas kurios ist das schon. hab das ganze bei mir mal selbst
                ausprobiert - gab es keine Probleme, auch wenn die nachnamen
                unmaskiert in der Datenbank liegen.

                Was hast du den noch in der WHERE Klausel stehen?
                Du nutzt aber MySQL oder?
                Zuletzt geändert von piep83; 27.01.2006, 12:32.
                Computernotdienst Eisleben
                Softwarelösung für Rechtsanwälte und Notare

                Kommentar


                • #9
                  Habadere piep83,

                  ja, es ist MySql.

                  PHP-Code:
                  $sql="SELECT * FROM vorstandschaft where nachname='$nachname' and vorname='$vorname'";  
                  $result=mysql_db_query($db,$sql);
                  while (
                  $row=mysql_fetch_array($result)){ 

                  Hast du es so ausprobiert, dass du einen Eintrag
                  PHP-Code:
                  Bäer 
                  in deiner Tabelle stehen hast.

                  Dann machts du ein Abfrageformular und gibst beim Textfeld Nachname nur Baumler ein. Den gibt es aber nicht in deiner db. Als Ergebnis bekommst du dann die Daten vom Bäumler! So ist es bei mir. Probier es mal bitte aus, dauert doch nicht lange. Müsste somit bei dir dann das gleiche Problem geben. Oder nicht?

                  Kommentar


                  • #10
                    hallo fan-maec,

                    hab das ganze jetzt mehrmals probiert - gab keine Probleme.

                    Laß dir mal den übergeben Wert "$nachname" vom abgesendeten
                    Formular ausgeben bevor du ihn in die Abfrage übergibst. Schau dann
                    bitte im Quelltext wie der Wert ausgegeben wird.

                    PHP-Code:
                    echo $nachname;
                    $sql="SELECT * FROM vorstandschaft where nachname='$nachname'";  
                    $result=mysql_db_query($db,$sql);
                    while (
                    $row=mysql_fetch_array($result)){ 
                    Zuletzt geändert von piep83; 27.01.2006, 12:32.
                    Computernotdienst Eisleben
                    Softwarelösung für Rechtsanwälte und Notare

                    Kommentar


                    • #11
                      Danke, dass du es ausprobiert hast.

                      Gesagt, getan!

                      PHP-Code:
                      echo $nachname // Es wird Baumler angezeigt, so wie ich es im Formular abgeschickt habe 
                      Das Formulartextfeld vorname lasse ich frei.

                      Als Ergebnis bekomme ich wieder die Daten vom

                      PHP-Code:
                      Bäumler 

                      Kommentar


                      • #12
                        besteht die Möglichkeit, das du mir mal den Quellcode
                        mit dem Formular und der Abfrage zukommen lässt?
                        Zuletzt geändert von piep83; 27.01.2006, 12:32.
                        Computernotdienst Eisleben
                        Softwarelösung für Rechtsanwälte und Notare

                        Kommentar


                        • #13
                          Freilich,

                          aber per email. Wie bekomme ich deine email-Adresse?

                          Kommentar


                          • #14
                            Hallo Interessierte,

                            das Problem besteht weiterhin!

                            Kommentar


                            • #15
                              Welche MySQL-Version? ggf. update die mal, vielleicht ist es einfach ein Bug von MySQL (ja, auch sowas kommt mal vor XD)

                              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                              Wie man Fragen richtig stellt

                              Kommentar

                              Lädt...
                              X