php include und umlaute nr2

NoUse4aNick

Mitglied
Hallo zusammen,

Um das mal vorwegzunehmen: Ich habe den Thread einige Beiträge unter mir geleseen und habe trotzdme ein Problem.

Mein Problem ist folgendes: Sobald ich mein Formular include werden die Daten zwar richtig übertragen, sobald ich diese aber in die SQL datenbank reinspeisen möchte werden die Umlaute zerstört.

Alle dateien sind in UTF-8 Kodiert.

Die MySQL Datenbank ist UTF 8 Kodiert aber hier mal sicherheitshalber der Tabellen aufbau:
Code:
CREATE TABLE IF NOT EXISTS `guestbook` (
  `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `Autor` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `Datum` datetime NOT NULL,
  `Inhalt` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE =  MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

mein HTML header:
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

das Formular das eingebunden wird:
HTML:
<form action="index.php" method="POST" >
    <fieldset>
        <legend>Neuer Kommentar</legend>
        <ol>
            <li> 
                <label for="theName">Ihr name</label>
                <input type="text" name="theName" id="theName" value="<?php if (isset($_POST["theName"])) echo htmlentities($_POST["theName"]); ?>"/>
            </li> 
            <li>
                <label for="theComment">Kommentar</label>
                <textarea name="theComment" id ="theComment" ><?php if (isset($_POST["theName"])) echo htmlentities($_POST["theComment"]); ?></textarea>
            </li> 
        </ol>
    </fieldset>
    <fieldset class="submit">  
        <input class="submit" type="submit" value="Abschicken" />  
    </fieldset>
</form>

und zum schluss noch der PHP code der das ganze in die SQL Datenbank schleust:
PHP:
    if (isset($_POST['theComment']) && isset($_POST['theName'])){

        if ($_POST['theComment'] != "" && $_POST['theName'] != "") {
            $loadForms = false;

            $sql = 'INSERT INTO Guestbook(Autor, Datum, Inhalt) VALUES (?, NOW(), ?)';
            $stmt = $db->prepare($sql);
            if (!$stmt) {
                die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
            }
            $stmt->bind_param('ss', utf8_encode($_POST['theName']), utf8_encode($_POST['theComment']));
            if (!$stmt->execute()) {
                die ('Query konnte nicht ausgeführt werden: '.$stmt->error);
            }
        }
     }

Code habe ich ebenfalls ohne utf8_encode für die Variablen ausgeführt, funktioniert Trotzdem nicht.

Ich habe absichtlich die htmlentities umwandlung ausgelassen, da ich den Text so wie er kommt mit Tags und umlauten übernehmen muss.

Ich bedanke mich schonmal im voraus

liebe Grüße
NoUse4aNick
 
Hi, vermutlich liegt es daran, dass du der Verbindung zur Datenbank noch den Zeichensatz mitgeben musst. Probier mal folgendes, direkt nachdem du die Verbindung zur Datenbank in PHP herstellst.
PHP:
$db->query("SET NAMES 'utf8'");
 
Danke an meine Vorposter.

Es war zum einen der Nicht übergebene Wert zum anderen aber auch eine Fehlerhaft MySQL installation.

Ich habe jetzt den Webserver neu aufgesetzt und siehe da es funktioniert.

Vielen Dank

liebe Grüße
NoUse4aNick
 
Zurück