1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Probleme mit den Umlauten in meiner MySQL-Datenbank

Dieses Thema im Forum "PHP" wurde erstellt von CreativPur, 10. Januar 2017.

  1. CreativPur

    CreativPur Erfahrenes Mitglied

    Hallo,

    ich habe folgendes Problem,

    Auf meiner Seite werden alle Umlaute richtig angezeigt.
    Dies wird logischerweise durch folgenden meta erzeugt.
    HTML:
    1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    Jetzt habe ich auf dieser Seite ein Newsletter-Formular, wo die Daten in eine Datenbank (MySQL) übertragen werden.
    Dort werden die Umlaute weder richtig umgewandelt noch ausgegeben..
    Nehme ich den Meta-Code raus, funktioniert meine Datenbank, aber die gesamte Seite wird ohne Umlaute dargestellt.

    Mein Code für die Datenbank..
    PHP:
    1. <?php
    2.  
    3.  
    4. if(isset($_POST['senden']))
    5.     $datenbank_host = 'xxxxx';
    6.     $datenbank_user = 'xxxxx';
    7.     $datenbank_passwort = 'xxxxx';
    8.     $datenbank_name = 'xxxxx';
    9.    
    10.  
    11.    
    12. if (!isset($_POST['senden'])) $_POST['senden'] = '';
    13.     if (!isset($_POST['vorname'])) $_POST['vorname'] = '';
    14.     if (!isset($_POST['name'])) $_POST['name'] = '';
    15.     if (!isset($_POST['email'])) $_POST['email'] = '';
    16. if ($_POST['senden'] != '' AND $_POST['vorname']!= '' AND $_POST['name'] != '' AND $_POST['email'] != '') {
    17.  
    18.         $link = @mysql_connect($datenbank_host,
    19.             $datenbank_user, $datenbank_passwort);
    20.  
    21.         if (!$link) {
    22.             die('keine Verbindung möglich: ' .
    23.                 mysql_error());
    24.         }
    25.  
    26.         $db_selected =
    27.             @mysql_select_db($datenbank_name, $link);
    28.  
    29.         if (!$db_selected) {
    30.             die ('Kann '.$datenbank_name.' nicht benutzen : ' . mysql_error());
    31.         }
    32.     $sql_insert = "INSERT INTO `user`
    33.            (`vorname`,`name`,`email`)
    34.            VALUES('".mysql_escape_string($_POST['vorname'])."','".mysql_escape_string($_POST['name'])."','".mysql_escape_string($_POST['email'])."')";
    35.  
    36.         if (@mysql_query($sql_insert, $link) != false) {
    37.             echo '<span style="color:blue;">Ihr Newsletter wurde bestellt!</span>';
    38.             $_POST['vorname'] = '';
    39.             $_POST['name'] = '';
    40.             $_POST['email'] = '';
    41.            
    42.         } else {
    43.  
    44.             echo 'Der Eintrag wurde nicht
    45.                gespeichert!';
    46.         }
    47.         @mysql_close($link);
    48.     }  
    49.     echo '<br />';
    50.     echo '<form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" method="post"">';
    51.     echo '<input type="text" name="vorname" class=" text-center" placeholder="Ihr Vorname" value="'.htmlspecialchars($_POST['vorname']).'"/> ';
    52.     echo '<input type="text" name="name" class="text-center" placeholder="Ihr Nachname" value="'.htmlspecialchars($_POST['name']).'"/> ';
    53.     echo '<input type="text" name="email" class="full text-center" placeholder="Ihre Email-Adresse" value="'.htmlspecialchars($_POST['email']).'"/> <br/>';
    54.     echo '<button class="btn bg-gray" type="submit" name="senden" value="absenden"> Newsletter bestellen <i class="fa fa-long-arrow-right"> </i> </button>';
    55.     echo '</form>';
    56.    ?>
    Worin liegt der Fehler ?

    Wie kann ich überprüfen lassen, ob die Mail-Adresse schon besteht, und wenn ja, wie verhindere ich einen doppelten Eintrag ?

    Vielen Dank für eure Hilfe
     
  2. Bratkartoffel

    Bratkartoffel gebratene Kartoffel Premium-User

    Hi,

    die mysql_*-Funktionen sind deprecated und wurden mit PHP7 entfernt, aber zu deinen Fragen:
    1) Auch die Datenbank muss mit UTF-8 angesprochen werden: http://stackoverflow.com/a/202246/1164913
    2) Lege einen Unique-Key auf die gewünschte Spalte

    Grüsse,
    BK
     
  3. CreativPur

    CreativPur Erfahrenes Mitglied

    Vielen Dank für die rasche Antwort..

    Ich denke mal, dass ich die Datenbank richtig Codiert habe..
    [​IMG]

    Ich bin absolut nicht der Datenbank-Guro, aber ich denke mal, das die Codierung stimmt, oder ?
     
  4. Bratkartoffel

    Bratkartoffel gebratene Kartoffel Premium-User

    Hi,

    Sorry, hier ist das besser beschrieben.

    Grüsse,
    BK
     
  5. CreativPur

    CreativPur Erfahrenes Mitglied

    Das ist doch eine Nummer zu groß für mich.. Ich sehe nur einen Wald voller Bäume.... shit
     
  6. alxy

    alxy Erfahrenes Mitglied

    Probiere mal, der Form noch folgendes Attribute zu geben: http://www.w3schools.com/tags/att_form_accept_charset.asp
    Testweise kannst du auch mal ausprobieren, einfach so (manuell) ein paar Umlaute (ÖÄÜ..) in die DB zu schreiben - funktioniert das?

    Abgesehen davon geht mysql_* natürlich garnicht ;)
     
  7. EuroCent

    EuroCent KlappStuhl 2.0

    Hallo @CreativPur
    hast du einmal überprüft was dir jeweiligen Elemente zurück liefern?
    Eventuell ist da schon der fehler :)

    PS: Wie sieht den der Eintrag oder die Einträge der Datenbank aus, in denen die Umlaute nicht richtig dargestellt werden.
    Denn normal sollte dort als HTML-Code für beispielsweise ß (&szlig;) oder für ÄÖÜ (&Auml; &Ouml; &Uuml;) hinterlegt sein.
    Wenn es dass nicht ist, ist bereits der Fehler schon in der übermittlung ;)
     
  8. sheel

    sheel I love Asm Administrator

    Diese &-Codes sollten mit UTF8 Vergangenheit sein (bis auf die für < > und so von HTML) Und auch ohne Unicode gibt es keinen Grund, die schon in der DB zu haben; escapen beim Ausgeben reicht (dadurch leichtere Verarbeitung für andere Sachen serverseitig).
     
  9. EuroCent

    EuroCent KlappStuhl 2.0

    Naja dennoch muss ja gewährleistet sein, dass es in der Datenbank auch schon richtig ankommt, sonst hat man mit unter ungewollte und unschöne Sonderzeichen, die keinerlei bedeutung haben :)

    Zumindestens war es immer bei mir :D
     
Die Seite wird geladen...