Willkommen in der Webstatt Zum Webstatt Blog und Stories
Flom Flom am 02.04.09 23:03

Hallo,
Ich habe ein Problem.
Es werden keine Umlaute oder sonderzeichen direkt übernommen in die MySQL DB. Hat der wer spontan einen Tipp ?

Strucktur vllt. hilft es ja
CREATE TABLE IF NOT EXISTS `news` (
`id` int(11) NOT NULL auto_increment,
`thema` varchar(50) default NULL,
`image` text,
`news` text,
`autor` varchar(50) default NULL,
`datum` datetime default NULL,
PRIMARY KEY (`id`)
)


So lass ich es Anzeigen:

###Abfrage
$abfrage = "SELECT id, thema, image, news, autor, datum FROM news WHERE id = '$teile[1]'";
$ergebnis = mysql_query($abfrage);
###Anzeige
while( $row = mysql_fetch_object($ergebnis) ) {
$a_datum = explode("-",$row->datum);
$b_datum = explode(" ",$row->datum);
$a_datum[2] = substr($a_datum[2], 0, 2);
$b_datum = substr($b_datum[1], 0, 5);
$new_datum = $a_datum[2].".".$a_datum[1].".".$a_datum[0];
$text = str_replace("\n","<br />",$row->news );
if( $row->image == "" ) {
$image = "";
}elseif( $row->image == "http://" ) {
$image = "";
}else{
$image = "<img src=\"".$row->image."\" border=\"0\" style=\"float: left;\">";
}
##################################################################################
echo "<b>&nbsp;&nbsp;".$row->thema."</b><hr />";
echo $image;
echo $text;
echo "<hr />&nbsp;&nbsp;<font size=\"1\">Verfasst von ".$row->autor." am $new_datum um $b_datum Uhr.</font>";
echo "<br />";
}

netcup.de Warum gibt es hier Werbung?
danieL danieL am 03.04.09 11:52

stell doch mal den Zeichensatz der Tabelle auf UTF-8 dann sollte das eigentlich gehen.. bzw. latin1 sollte das auch können.

Flom Flom am 03.04.09 13:13

ich hab es jetzt auf latin1_german1_ci umgestellt... Zeichen werden jetzt dargestellt, jedoch keine Ü Ä Ö's ...

Noch eine Idee ?

Grüße

Snake am 03.04.09 16:09

Hallo,

die Hauptfrage stellt sich erst einmal, wo genau der Zeichensatz nicht stimmt. Funktionieren denn Umlaute, wenn du sie ohne Datenbank ausgibst?
Werden die Umlaute in phpMyAdmin dargestellt?

Flom Flom am 03.04.09 17:21

nach der Umstellung nicht mehr,
davor ja

Snake am 03.04.09 18:14

und ein einfaches "echo 'äöü';" funktioniert?

Flom Flom am 06.04.09 09:44

ja das funktioniert

Kevz am 06.04.09 15:56

Eine andere Frage - wie sehen denn die Umlaute in der Datenbank aus, wenn Du sie hinzufügst?! Machst Du es per phpMyAdmin direkt, oder über die mysql- Funktion in der PHP- Datei selbst?, wenn ja - wäre es vllt. hilfreich, wenn Du diese mal reinstellen würdest..

Flom Flom am 06.04.09 19:15

Ich machs über PHP:

<form name="Formular" method="post" action="<?php $PHP_SELF; ?>">
&Uuml;berschrift:<br />
<input type="text" name="ueberschrift" size="35" maxlength="50"><br />
Text:<br />
<textarea name="text" cols="45" rows="10"></textarea><br />
News Bild (URL):<br />
<input type="text" name="image" size="35" maxlength="50" value="http://"><br />
Autor:<br />
<input type="text" name="autor" size="21" maxlength="20"><br />
<input type="text" name="los" size="4" maxlength="4" value="ok" style="display: none;">
<input type="submit" name="gesendet" value="Absenden"> *
<input type="reset">
</form>

<?php
include("mysql_connect.php");
if($_POST["los"] == "ok") {
$timestamp = time();
$date = date("d.m.Y",$timestamp);
$zeit = date("H:i",$timestamp);
$a_datum = explode(".",$date);
$datum = $a_datum[2]."-".$a_datum[1]."-".$a_datum[0]." ".$zeit.":00";
$ueberschrift = $_POST["ueberschrift"];
$text = $_POST["text"];
$image = $_POST["image"];
$autor = $_POST["autor"];

$eintrag = "INSERT INTO news (thema, image, news, autor, datum) VALUES ('$ueberschrift', '$image', '$text', '$autor', '$datum')";
$eintragen = mysql_query($eintrag);
echo "<br /><br /><font color=\"#ff0000\"><b>Eintrag erfolgreich hinzugefügt!</b></font>";
}
mysql_close($verbindung);
?>

sili sili am 08.04.09 16:07

Viele Zeichenkodierungsprobleme kannst du beheben, wenn du direkt nach dem der Datenbank-Verbindung folgendes "Abfrage" machst:

$db->query("SET NAMES 'utf8'");

Flom Flom am 13.05.09 23:06

irgendwie mache ich etwas falsch
wenn ich folgendes mache:
<?php
$verbindung = mysql_connect("localhost", "root", "") or die ("Keine Verbindung m&ouml;glich"); //Verbindung herstellen
mysql_select_db("hwc") or die ("Die Datenbank existiert nicht"); //Verbindung zur Datenbank
$db->query("SET NAMES 'utf8'");
?>


zeigt er mir eine fehlermeldung an... klar ist mir dass das ding halt nicht $db heißen soll...
was kommt da nu hin?! $verbindung?

Johannes am 13.05.09 23:33

mysql_query("SET NAMES 'utf8'",$verbindung)
sollte in dem fall helfen.
meist hat man halt eine Klasse $db, die dann alles kann...

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt