[PHP] Problem mit Umlauten in MySQL schreiben

Dieses Thema im Forum "Webentwicklung" wurde erstellt von B30w0lf, 2. April 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 2. April 2009
    Problem mit Umlauten in MySQL schreiben

    Hallo liebe RR'ler,

    ich habe ein Problem und zwar folgendes:

    Ich habe ein Formular für ein Newsscript, wo man den Titel, den Newstext und den Verfasser angeben kann und dann in eine MySQL Tabelle reingeschrieben wird.

    Das Problem was ich habe, ist wenn ich jetzt Umlaute wie ä,ö oder ü im Newstext habe, werden diese Umlaute nicht richtig in die MySQL Tabelle geschrieben sondern wie folgt:

    ä=ä
    ö=ö
    usw.

    Was muss ich im folgenden Code ändern damit es funktioniert:

    PHP:
    <script language="JavaScript" type="text/javascript">
    function AddCode(Code)
    {
      window.document.news.text.value = window.document.news.text.value + Code;
      window.document.news.text.focus();

    }
    </script>

    <center>
    <form id="news" name="news" method="post" action="<? $_SERVER [ 'PHP_SELF' ];  ?>">
      <table border="1" rules="all">
        <tr>
          <td width="75">Kategorie</td>
          <td><label>
            <select name="kategorie" id="kategorie">
              <option value="event" selected="selected">Event</option>
              <option value="memo">Memo</option>
              <option value="news">News</option>
              <option value="special">Spezial</option>
              <option value="warnung">Warnung</option>
            </select>
          </label></td>
        </tr>
        <tr>
          <td>Titel</td>
          <td><label>
            <input name="titel" type="text" id="titel" size="103" />
          </label></td>
        </tr>
        <tr>
          <td valign="top">Text</td>
          <td><label>
            <textarea name="text" id="text" cols="78" rows="20"></textarea>
            <br />
            <br />
            Funktionen:<br />
            <input type="button" name="bold" id="bold" value="[b]" onclick="AddCode('<b></b>')" />
            <input type="button" name="kursiv" id="kursiv" value="[i]" onclick="AddCode('<em></em>')" />
            <input type="button" name="bild" id="bild" value="[img]" onclick="AddCode('<img src=></img>')" />
          </label></td>
        </tr>
        <tr>
          <td>Verfasser</td>
          <td><label>
            <input name="verfasser" type="text" id="verfasser" size="103" maxlength="50" />
          </label></td>
        </tr>
      </table>
      <p>
        <label>
          <input type="submit" name="eintragen" id="eintragen" value="News eintragen" />
        </label>
        <br />
        <label>
          <input type="reset" name="reset" id="reset" value="Zurücksetzten" />
        </label>
      </p>
    </form>
    </center>
    <?

    if(isset( $_POST [ 'eintragen' ])) {

    include(
    "../config.inc.php" );

    $news_kategorie = $_POST [ 'kategorie' ];
    $news_titel = $_POST [ 'titel' ];
    $news_text = $_POST [ 'text' ];
    $news_verfasser = $_POST [ 'verfasser' ];
    $news_datum = date ( "Y-m-d" );


    mysql_connect ( $sql_host , $sql_user , $sql_pass );
    mysql_select_db ( $sql_db );

    $sql  "INSERT INTO news (news_kategorie, news_titel, news_text, news_verfasser, news_datum) VALUES (' $news_kategorie ', ' $news_titel ', ' $news_text ', ' $news_verfasser ', ' $news_datum ' )" ;

    $result  mysql_query ( $sql ) OR die( mysql_error ());

    echo 
    "Daten erfolgreich eingetragen." ;

    }
    ?>
     
  2. 2. April 2009
    AW: Problem mit Umlauten in MySQL schreiben

    Prober mal im HTML Header
    Und notfalls wenn das net klappt:
    Einmal das ausführen, mach aber davor ein Datenbank Backup nicht das es dir alles zerschiest. Man weis ja nie.^^




    PHP: mysql_real_escape_string - Manual
    Solltes du dir noch ansehen.

    =>Besser bei allen Post und Get Variablen benutzen
    PHP:
    $news_kategorie mysql_real_escape_string  $_POST [ 'kategorie' ] ); 
     
  3. 2. April 2009
    AW: Problem mit Umlauten in MySQL schreiben

    Hallo,

    ich würde mal versuchen, die Datenbank auf UTF8 umzustellen, ansonsten htmlentities auf php.net lesen.

    Gruß

    Edit: mitm Utf8 war wer schneller und besser
     
  4. 3. April 2009
    AW: Problem mit Umlauten in MySQL schreiben

    htmlentities nützt rein garnichts gegen mysql-injections...

    andersrum nützt mysql-real-escape-string nichts gegen xss
     
  5. 3. April 2009
    AW: Problem mit Umlauten in MySQL schreiben

    du hast 2 möglichkeiten
    a) charset der seite auf die db anpassen (siehe oben, content type).

    b) datenbank auf charset der seite anpassen (collations?) => MySQL :: MySQL 5.0 Reference Manual :: 10.1 Character Set Support

    oder aber

    c) die daten werden korrekt reingeschrieben, aber die oberfläche mit der du die daten anguckst hat eine andere codierung. Z.B. eben mit phpmyadmin. kannst es ja da über firefox das charset umstellen.
     
  6. 3. April 2009
    AW: Problem mit Umlauten in MySQL schreiben

    (Hab den Text nur kurz überflogen)

    Helfen könnte auch: utf8_decode
     
  7. 3. April 2009
    AW: Problem mit Umlauten in MySQL schreiben

    zur umlautproblematik empfehle ich das hier:
    MySQLDumper-Board :: View topic - Die Umlautproblematik - was, wieso, was tun?

    UNBEDINGT zu lesen...

    ist zwar ein wenig mysqldumper spezifisch, jedoch wird da die ursache der probleme mit umlauten genau erklärt...
     
  8. 3. April 2009
    AW: Problem mit Umlauten in MySQL schreiben

    Erstmal danke an alle.

    Habe die Kollations der Tabelle erstmal von latin auf utf-8-general-ci gestellt und jetzt funktioniert das mit dem Eintragen und Ausgeben der News ohne komischen Sonderzeichen sondern so wie ich es möchte

    Vielen Dank an alle habt alle eine Bewertung bekommen
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.