Guten Tag
Mein Problem ist eigentlich nur ein kosmetisches und trotzdem ärgere ich mich, dass ich das nicht hinbekomme. Ich habe ein Formular erstellt womit ich die Daten per PHP in eine MYSQ-Datenbank schreiben kann. Das funktioniert eigentlich auch ganz gut, nur in der Datenbank erscheinen die Umlaute nicht so wie sie sollten. Ich recherchiere schon seit Tagen im Internet und habe auch schon diverses ausprobiert, leider ohne Erfolg. Ihr seit meine letzte Hoffnung.
Hier ein paar Angaben zur Datenbank. Zeichensatz der Datenbank: utf8mb4_general_ci Tabelle users: Typ = MylSAM, Kollation = utf8_general_ci
Nachfolgend der Code:
<?php
header('Content-Type: text/html; charset=utf-8');
$showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll
if(isset($_GET['register'])) { $error = false; $nachname = $_POST['nachname']; $vorname = $_POST['vorname']; $email = $_POST['email']; $passwort = $_POST['passwort']; $passwort2 = $_POST['passwort2']; if(strlen($nachname) == 0) { echo '<font class="f1">Bitte ein Name eingeben, </font>'; $error = true; } if(strlen($vorname) == 0) { echo '<font class="f1">Bitte ein Vorname eingeben,<br></font> '; $error = true; } if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo '<font class="f1">Bitte eine gültige E-Mail-Adresse eingeben, </font> '; $error = true; } if(strlen($passwort) == 0) { echo '<font class="f1">Bitte ein Passwort angeben, </font> '; $error = true; } if($passwort != $passwort2) { echo '<font class="f1">Die Passwörter müssen übereinstimmen, </font> '; $error = true; } //�berpr�fe, dass die E-Mail-Adresse noch nicht registriert wurde if(!$error) { $statement = $pdo->prepare("SELECT * FROM users WHERE email = :email"); $result = $statement->execute(array('email' => $email)); $user = $statement->fetch(); if($user !== false) { echo '<font class="f1">Diese E-Mail-Adresse ist bereits vergeben </font> '; $error = true; } } //Keine Fehler, wir k�nnen den Nutzer registrieren if(!$error) { //$passwort_hash = password_hash($passwort, PASSWORD_DEFAULT); (wenn Passwort verschl�sselt �bertragen werden soll muss diese Zeile aktiviert werden) $statement = $pdo->prepare("INSERT INTO users (nachname, vorname, email, passwort) VALUES (:nachname, :vorname, :email, :passwort)"); $result = $statement->execute(array('nachname' => $nachname, 'vorname' => $vorname, 'email' => $email, 'passwort' => $passwort)); // $passwort muss dann nach $passwort_hash ge�ndert werden if($result) { echo '<font class="f2">Du wurdest erfolgreich registriert.</font><br>'; //<a href="login.php">Zum Login</a>'; echo '<font class="f2">Ich werde dich per Mail informieren, wenn dein Account aktiviert wurde.</font><br /><br />'; echo '<font class="f3"><a href="download.php">weiter</a> </font>'; $showFormular = false; } else { echo '<font class="f1">Beim Abspeichern ist leider ein Fehler aufgetreten </font> '; } } } if($showFormular) { </div> <div id="box"> <form accept-charset="UTF-8" method="post" action="?register=1" name="Nachname:"> <h1 class="titel">Registrierung für den Download der Agenda</h1> <table> <tr> <td class="sp1">Nachname:</td><td class="sp2"><input class="frm" type="nachname" name="nachname" maxlength="250" /></td> </tr> <tr> <td class="sp1">Vorname:</td><td class="sp2"><input class="frm" type="vorname" name="vorname" size="27" maxlength="250" /></td> </tr> <tr> <td class="sp1">E-Mail:</td><td class="sp2"><input class="frm" type="email" name="email" size="27" maxlength="250" /></td> </tr> <tr> <td class="sp1a"></td><td class="sp2a">(mind. 6 Zeichen)</td> </tr> <tr> <td class="sp1">Dein Passwort:</td><td class="sp2"><input class="frm" type="password" name="passwort" size="27" maxlength="250" /></td> </tr> <tr> <td class="sp1">Passwort wiederholen:</td><td><input class="frm" type="password" name="passwort2" size="27" maxlength="250" /></td> </tr> </table>
<input class="but" type="submit" value="Abschicken" /> </form> </div>
?>
Was mache ich falsch, dass die Umlaute nicht korrekt dargestellt werden?
Besten Dank für eure Hilfe.
Freundliche Grüsse Ebro |