MySQL-Variable in php-Funktion

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von BlackBard, 27.12.2008.

  1. #1 BlackBard, 27.12.2008
    BlackBard

    BlackBard Verpeilter Vielfraß

    Dabei seit:
    18.08.2006
    Beiträge:
    35
    Zustimmungen:
    0
    Ort:
    Münster
    Hallo, ich habe folgendes Problem:
    Ich will in einer aus einer MySQL-Datenbank ausgelesene Variable (bzw. per while mehrere hintereinander) durch eine Funktion Umlaute durch die Umschreibungen in RTF austauschen. Wenn ich die Variable ($nachname) ohne MySQL (und die while-Schleife) fülle funktioniert alles wunderbar, wenn ich sie aus der Datenbank auslese tut die Funktion nichts und gibt mir nur die Originale aus der Datenbank zurück. Was mache ich falsch?

    Code:
    
    //Umlaute durch Umschreibungen von RTF ersetzen
    function umlaute($text)
    {
    $search  = array ('ä', 'ö', 'ü', 'ß', 'Ä', 'Ö', 'Ü');
    $replace = array ('\\\'e4', '\\\'f6', '\\\'fc', '\\\'df', '\\\'c4', '\\\'d6', '\\\'dc');
    $str  = str_replace($search, $replace, $text);
    return $str;
    }
    
    $nachname = "Hallö ein Ümlauttäst";
    echo umlaute($nachname);
    
    
    echo "<br><br>";
    
    
    // Alle Daten der VV $vvnr aus der Datenbank holen
    $res = mysql_query("SELECT * FROM anmeldung WHERE vv='" . $vvnr . "'");
    while ($row = mysql_fetch_array($res)){
    extract ($row);
    
    echo umlaute($nachname);
    }
    ?>
    
    Die Ausgabe ist dann
    Code:
    Hall\'f6 ein \'dcmlautt\'e4st
    
    KrügerMeierMüllerÖzdemirSchulz
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Always-Godlike, 27.12.2008
    Always-Godlike

    Always-Godlike Das Freak

    Dabei seit:
    31.12.2006
    Beiträge:
    939
    Zustimmungen:
    0
    Ort:
    Saarland
    sind in der SQL auch wirklich die Sonderzeichen als solche drinne oder sind se dort als HTML-Sonderzeichen drinne, also sowas wie &uuml; oder &auml;

    Schalt am Anfang deines Scriptes auch mal error_reporting(E_ALL); ein um weitere Fehler ausfindig zu machen.
     
  4. #3 BlackBard, 27.12.2008
    BlackBard

    BlackBard Verpeilter Vielfraß

    Dabei seit:
    18.08.2006
    Beiträge:
    35
    Zustimmungen:
    0
    Ort:
    Münster
    Die Umlaute sind so in der DB drin (zumindest werden sie auch im html-Quellcode als Umlaute angezeigt und auch in phpMyAdmin als solche ausgegeben (auch in dessen Quelltext)).
    Das error_reporting(E_ALL); änderte leider auch nichts an der Augabe.
     
  5. #4 countryking, 27.12.2008
    Zuletzt bearbeitet: 27.12.2008
    countryking

    countryking Mitglied

    Dabei seit:
    27.09.2008
    Beiträge:
    43
    Zustimmungen:
    0
    Wenn ich fragen darf: wieso benutzt du dafür nicht die von mysql vorgesehenen Funktionen?
     
  6. DaMutz

    DaMutz Doppel-As

    Dabei seit:
    18.10.2003
    Beiträge:
    149
    Zustimmungen:
    0
    Ort:
    Giebenach / Schweiz
    ich denke, das Problem liegt am Zeichensatz. Die PHP Datei hat einen anderen Zeichensatz wie die Daten in der MySQL Tabelle.

    Ein ö in utf-8 wird nicht erkannt wenn du nach einem ö in latin1 (oder was auch immer) suchst.
     
  7. #6 BlackBard, 28.12.2008
    BlackBard

    BlackBard Verpeilter Vielfraß

    Dabei seit:
    18.08.2006
    Beiträge:
    35
    Zustimmungen:
    0
    Ort:
    Münster
    Danke für Eure Hilfe und Denkanstöße!

    @countryking: Vermutlich weil ich sie nicht kenne... :O

    Es war tatsächlich ein Zeichensatzproblem. Jetzt funktioniert die Funktion wunderbar, dafür macht mir das RTF jetzt Probleme. Ich bekomme die Umlaute tatsächlich ausgetauscht, nur kommen (an welcher Stelle auch immer [korrigiert OOo nicht-korrekte rtf-Dateien??]) zusätzliche Zeichen dazu und die Buchstaben nach dem Umlaut werden dadurch verschluckt. :think:
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. juan_

    juan_ König

    Dabei seit:
    22.01.2004
    Beiträge:
    992
    Zustimmungen:
    0
    Ort:
    Berlin
    du suchst replace(), wobei ich dein 2. Problem nicht mehr verstehe ;)
     
  10. #8 BlackBard, 01.01.2009
    BlackBard

    BlackBard Verpeilter Vielfraß

    Dabei seit:
    18.08.2006
    Beiträge:
    35
    Zustimmungen:
    0
    Ort:
    Münster
    replace() hatte ich nach countrykingsfrage auch noch gefunden. Das zweite Problem ist, wie ich nach langer Recherche rausgefunden habe, ein Problem der rtf-Spezifikation, die so wie es ausschaut auf 7 Bit ausgelegt ist (was dazu führt, dass es bei Unicode-Zeichen rumzickt). Anbei garb es auch noch ein Script, das genau das macht was ich will:

    http://forum.de.selfhtml.org/archiv/2008/3/t167583/

    :D
     
Thema:

MySQL-Variable in php-Funktion