Probleme mit den Umlauten in meiner MySQL-Datenbank

CreativPur

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem,

Auf meiner Seite werden alle Umlaute richtig angezeigt.
Dies wird logischerweise durch folgenden meta erzeugt.
HTML:
<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:
<?php


if(isset($_POST['senden']))
    $datenbank_host = 'xxxxx';
    $datenbank_user = 'xxxxx';
    $datenbank_passwort = 'xxxxx';
    $datenbank_name = 'xxxxx';
   

   
if (!isset($_POST['senden'])) $_POST['senden'] = '';
    if (!isset($_POST['vorname'])) $_POST['vorname'] = '';
    if (!isset($_POST['name'])) $_POST['name'] = '';
    if (!isset($_POST['email'])) $_POST['email'] = '';
if ($_POST['senden'] != '' AND $_POST['vorname']!= '' AND $_POST['name'] != '' AND $_POST['email'] != '') {

        $link = @mysql_connect($datenbank_host,
            $datenbank_user, $datenbank_passwort);

        if (!$link) {
            die('keine Verbindung möglich: ' .
                mysql_error());
        }

        $db_selected =
            @mysql_select_db($datenbank_name, $link);

        if (!$db_selected) {
            die ('Kann '.$datenbank_name.' nicht benutzen : ' . mysql_error());
        }
    $sql_insert = "INSERT INTO `user`
            (`vorname`,`name`,`email`)
            VALUES('".mysql_escape_string($_POST['vorname'])."','".mysql_escape_string($_POST['name'])."','".mysql_escape_string($_POST['email'])."')";

        if (@mysql_query($sql_insert, $link) != false) {
            echo '<span style="color:blue;">Ihr Newsletter wurde bestellt!</span>';
            $_POST['vorname'] = '';
            $_POST['name'] = '';
            $_POST['email'] = '';
           
        } else {

            echo 'Der Eintrag wurde nicht
                gespeichert!';
        }
        @mysql_close($link);
    }   
    echo '<br />';
    echo '<form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" method="post"">';
    echo '<input type="text" name="vorname" class=" text-center" placeholder="Ihr Vorname" value="'.htmlspecialchars($_POST['vorname']).'"/> ';
    echo '<input type="text" name="name" class="text-center" placeholder="Ihr Nachname" value="'.htmlspecialchars($_POST['name']).'"/> ';
    echo '<input type="text" name="email" class="full text-center" placeholder="Ihre Email-Adresse" value="'.htmlspecialchars($_POST['email']).'"/> <br/>';
    echo '<button class="btn bg-gray" type="submit" name="senden" value="absenden"> Newsletter bestellen <i class="fa fa-long-arrow-right"> </i> </button>';
    echo '</form>';
   ?>

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
 
Vielen Dank für die rasche Antwort..

Ich denke mal, dass ich die Datenbank richtig Codiert habe..
Bildschirmfoto 2017-01-10 um 13.27.43.png


Ich bin absolut nicht der Datenbank-Guro, aber ich denke mal, das die Codierung stimmt, oder ?
 
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 ;)
 
Denn normal sollte dort als HTML-Code für beispielsweise ß (&szlig;) oder für ÄÖÜ (&Auml; &Ouml; &Uuml;) hinterlegt sein.
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).
 
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
 
Zurück