| SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden. |
 |
|

15-01-2006, 18:21
|
|
fan-maec
Registrierter Benutzer
|
|
Registriert seit: Apr 2003
Ort: 92648 Vohenstrauss
Beiträge: 43
|
|
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.
|

15-01-2006, 20:43
|
|
piep83
Junior Member
|
|
Registriert seit: Jan 2006
Beiträge: 116
|
|
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'
Geändert von piep83 (27-01-2006 um 13:31 Uhr)
|

16-01-2006, 12:40
|
|
fan-maec
Registrierter Benutzer
|
|
Registriert seit: Apr 2003
Ort: 92648 Vohenstrauss
Beiträge: 43
|
|
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?
|

16-01-2006, 14:10
|
|
piep83
Junior Member
|
|
Registriert seit: Jan 2006
Beiträge: 116
|
|
hallo fan-maec,
die Umwandlung der Sonderzeichen vor der Abfrage bezog sich
lediglich auf
Zitat:
|
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
Geändert von piep83 (27-01-2006 um 13:31 Uhr)
|

16-01-2006, 17:32
|
|
fan-maec
Registrierter Benutzer
|
|
Registriert seit: Apr 2003
Ort: 92648 Vohenstrauss
Beiträge: 43
|
|
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.
|

16-01-2006, 19:05
|
|
piep83
Junior Member
|
|
Registriert seit: Jan 2006
Beiträge: 116
|
|
hatte mal wieder ein Brett vor Kopf
MySql wandelt die deutsche Umlaute intern zur Sortierung um.
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.
Geändert von piep83 (27-01-2006 um 13:32 Uhr)
|

17-01-2006, 02:09
|
|
fan-maec
Registrierter Benutzer
|
|
Registriert seit: Apr 2003
Ort: 92648 Vohenstrauss
Beiträge: 43
|
|
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
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!
|

17-01-2006, 09:40
|
|
piep83
Junior Member
|
|
Registriert seit: Jan 2006
Beiträge: 116
|
|
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?
Geändert von piep83 (27-01-2006 um 13:32 Uhr)
|

17-01-2006, 13:30
|
|
fan-maec
Registrierter Benutzer
|
|
Registriert seit: Apr 2003
Ort: 92648 Vohenstrauss
Beiträge: 43
|
|
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 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?
|

17-01-2006, 15:17
|
|
piep83
Junior Member
|
|
Registriert seit: Jan 2006
Beiträge: 116
|
|
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)){
Geändert von piep83 (27-01-2006 um 13:32 Uhr)
|

17-01-2006, 15:44
|
|
fan-maec
Registrierter Benutzer
|
|
Registriert seit: Apr 2003
Ort: 92648 Vohenstrauss
Beiträge: 43
|
|
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
|

17-01-2006, 16:12
|
|
piep83
Junior Member
|
|
Registriert seit: Jan 2006
Beiträge: 116
|
|
besteht die Möglichkeit, das du mir mal den Quellcode
mit dem Formular und der Abfrage zukommen lässt?
Geändert von piep83 (27-01-2006 um 13:32 Uhr)
|

17-01-2006, 17:03
|
|
fan-maec
Registrierter Benutzer
|
|
Registriert seit: Apr 2003
Ort: 92648 Vohenstrauss
Beiträge: 43
|
|
Freilich,
aber per email. Wie bekomme ich deine email-Adresse?
|

20-01-2006, 11:33
|
|
fan-maec
Registrierter Benutzer
|
|
Registriert seit: Apr 2003
Ort: 92648 Vohenstrauss
Beiträge: 43
|
|
Hallo Interessierte,
das Problem besteht weiterhin!
|

20-01-2006, 15:27
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Welche MySQL-Version? ggf. update die mal, vielleicht ist es einfach ein Bug von MySQL (ja, auch sowas kommt mal vor XD)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|