Avatar billede RasmusWoelk Nybegynder
04. december 2010 - 13:29 Der er 9 kommentarer og
2 løsninger

Kan ikke skrive Æ, Ø og Å ind i database (PHP)

Hej eksperten!

Jeg har et problem, som MANGE andre før mig har haft. Jeg har søgt og søgt og forsøgt alverdens forslag, men har stadig problemet.

Når jeg vil indsætte data i min database via hjemmesiden, så laver den æ ø og å om til mærkelige tegn.

Jeg kan sagtens skrive æøå på hjemmesiden og kan ligeledes indsætte det direkte i databasen via. mysql, og så vises det korrekt. Problemet er altså umiddelbart rettet helt ned til selve indsættelsen i databasen.

Min tabel kører uft-8 og alle kolonner kører det samme. Meta koden er også sat til dette.

Mit setup er følgende:
- .dk webhotel ved web10
- website programmeret i PHP
- MySQL database


Håber en eller anden kan hjælpe mig :-)
Avatar billede jakobdo Ekspert
04. december 2010 - 14:55 #1
Når du siger æøå ser underligt ud, er det så når du trækker det ud igen eller?
Eller er det "bare" når du kigger i phpmyadmin, at æøå ser underligt ud ?
Avatar billede RasmusWoelk Nybegynder
04. december 2010 - 15:04 #2
Altså f.eks. ø bliver til ø når jeg indsætter det via. formlen på hjemmesiden.. og det er også i phpmyadmin, at det ser sådan ud. Jeg kan derimod godt gå ind og rette tabellen i phpmyadmin til ø og så læser den fint ø ud på hjemmesiden. :-S

Dvs. når jeg trækker det ud igen, er der intet problem. Når jeg indsætter går det i kage.

Har bl.a. leget med noget "SET NAME UFT8" i insert scriptet, men det virkede ikke, eller også lavede jeg det forkert.
Avatar billede jakobdo Ekspert
04. december 2010 - 15:07 #3
Du skal huske at bruge:

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

Både hvor du indsætter fra og hvor du trækker data ud igen.

Og SET NAMES UTF8 kan du evt. smide lige efter du har lavet mysql_connect().
Så vil mysql altid behandle data som utf8.
Avatar billede emfr08ab Nybegynder
04. december 2010 - 15:40 #4
Du skal sætte den 3 steder.

Det virker åbenbart i html-koden, da du kan se æ,ø og å normalt.

Det virker vel også i databasen, når du kan gemme æ, ø og å der.

Men du skal også sætte det i php-koden, når du henter data. Det gøres således:

mysql_set_charset('utf8',$connection);

Hvor connection er den variabel, der har databaseforbindelsen.
Avatar billede emfr08ab Nybegynder
04. december 2010 - 15:43 #5
Altså det skal stå i php-koden efter du har oprettet forbindelse og før du begynder at sætte data ind.
Avatar billede RasmusWoelk Nybegynder
05. december 2010 - 00:02 #6
Tak for svarene. Jeg har prøvet med lidt af hvert.

Altså min database forbindelse sætter jeg ind i starten af hvert dokument.. (include dbc.php)

Og sådan ser min connection ud lige nu:


$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");
$db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database");
mysql_set_charset('utf8',$link);

Men der er stadig problemer :-(

Andre forslag?
Avatar billede RasmusWoelk Nybegynder
05. december 2010 - 03:05 #7
Jeg har fundet fejlen. Der var noget script i koden, som åbentbart gav nogle problemer:

foreach($_POST as $key => $value) {
    $data[$key] = filter($value);

Efter jeg fjernede denne del og kørte direkte med $_POST, så var der ingen problem..

Jeg er lidt ny til PHP, så er i tvivl om hvorfor fejlen kom.

Hvis nogen søger point, så kom med et svar ;-)
Avatar billede jakobdo Ekspert
05. december 2010 - 10:46 #8
filter, er det din egen funktion eller ?
Avatar billede emfr08ab Nybegynder
05. december 2010 - 11:25 #9
Svar.
Avatar billede RasmusWoelk Nybegynder
05. december 2010 - 12:13 #10
jakobdo > Det er et script jeg har hentet et sted fra nettet. Så det er der filter funktionen stammer fra. Men har bare fjernet den, så det virker fint nu :-)

Tak for hjælpen folkens.
Avatar billede jakobdo Ekspert
05. december 2010 - 12:16 #11
Takker for point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester