MySQL-Variable in php-Funktion

Diskutiere MySQL-Variable in php-Funktion im Ruby, php, Perl, Python ... Forum im Bereich Programmieren unter Linux/Unix; Hallo, ich habe folgendes Problem: Ich will in einer aus einer MySQL-Datenbank ausgelesene Variable (bzw. per while mehrere hintereinander) durch...

  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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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. juan_

    juan_ König

    Dabei seit:
    22.01.2004
    Beiträge:
    994
    Zustimmungen:
    0
    Ort:
    Berlin
    du suchst replace(), wobei ich dein 2. Problem nicht mehr verstehe ;)
     
  9. #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

  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden