æ, ø og å i en database

Her kan du få hjælp og stille spørgsmål til MySQL/MySQLi!
Besvar
erikV
Begynder
Indlæg:5
Tilmeldt:1. jul 2014, 14:27
æ, ø og å i en database

Indlæg af erikV » 1. jul 2014, 14:46

Kære folk hos NemProgrammering

Jeg har lige et spørgsmål angående phpMyAdmin. Jeg har manuelt lavet en tabel med en række indgange (fields). Nogle af disse er af typen VARCHAR eller TEXT. Problemet er bare, at når jeg senere skriver et PHP dokument til at udskrive indholdet af tabellen, så bliver æ, ø og å erstattet med mærkelige symboler, fx kasser. Hvad skal jeg gøre for at få indholdet skrevet med danske tegn, sådan som de er indtastet? Jeg har opdaget, at der automatisk under punktet "Tegnsætning(sortering" (hedder vist Collation på engelsk), automatisk bliver skrevet "Latin1_swedish_ci" i phpMyAdmin. Jeg prøvede at rette det til "Latin1_danish_ci", men det hjalp ikke. Jeg ved ikke, om det har noget med sagen at gøre. Jeg håber I kan hjælpe.

NB! Ellers skal I have super stor ros for denne side!! Jeg husker en gang for ca. 15 år siden, at der var noget, som hed "Webcafeen". Nu er der endelig kommet noget nyt af samme skuffe. Webcafeen blev desværre nedlagt for en del år tilbage. Jeres skærmvideoer er til stor hjælp. De har fået mig sat på sporet med MySQL databaser igen. Skal dog have skrevet mine database manipulationer i MySQL PDO, som jeg har fået at vide skal være fremtiden ... Tak for en god side!

Erik

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: æ, ø og å i en database

Indlæg af cristian » 1. jul 2014, 18:13

Er dit charset i din DB sat til at bruge UTF-8?

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg:709
Tilmeldt:21. jun 2012, 23:40
Kontakt:

Re: æ, ø og å i en database

Indlæg af scootergrisen » 1. jul 2014, 20:04

Du skal også have sat korrekt encoding i din HTML kode.

Kode: Vælg alt

<head>
    <meta charset="utf-8">
</head>

erikV
Begynder
Indlæg:5
Tilmeldt:1. jul 2014, 14:27

Re: æ, ø og å i en database

Indlæg af erikV » 1. jul 2014, 22:59

Dreamweaver skriver automatisk:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
så jeg regner med, at den side af sagen er i orden. Hvad angår selve Databasen, så har jeg prøvet at ændre tegnsæt på de enkelte indgange i tabellen. Der er mange valgmuligheder. Jeg valgte utf8_danish_ci. Jeg ved ikke om det er rigtigt? Desværre betyder det ikke, at jeg får vist æ, ø og å rigtigt, når jeg trykker på "Preview in IExplore" i Dreamweaver. Her er et skærmbillede af min tabel, som skal forestille at være et forsøg på at lave en gæstebog:
database.jpg
database.jpg (68.72KiB)Vist 12307 gange
Er det stadig ikke de rette tegnsæt?

Erik

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: æ, ø og å i en database

Indlæg af ThomasI » 2. jul 2014, 10:20

Hej,

Jeg går ud fra at trække din data ud via php.

har du prøver at tilføje dette i starten af dit doc?

Kode: Vælg alt

<?php header('Content-type: text/plain; charset=utf-8'); ?>

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: æ, ø og å i en database

Indlæg af cristian » 2. jul 2014, 10:43

Hvis alt fejler så gør følgende for at finde fejlen.

#1 Lav et udtræk direkte fra din DB og se om du udskriver æ, ø og å.

#2Lav et udtræk direkte i din HTML og se om du udskriver æ, ø og å.

#3 Lav et udtræk direkte fra din PHP kode og se om du udskriver æ, ø og å.

Så kan du hurtigt finde kilden til problemet hvis ikke den er flere steder.

erikV
Begynder
Indlæg:5
Tilmeldt:1. jul 2014, 14:27

Re: æ, ø og å i en database

Indlæg af erikV » 2. jul 2014, 18:06

Jeg har prøvet at skrive noget tekst med æ, ø og å i både i html delen af dokumentet og i php koden via en echo ... I begge tilfælde bliver æ, ø og å vist korrekt i browseren. Så det tyder på, at det ikke er indstillinger i Dreamweaver, men stammer fra håndtering af data fra databasen. Christian, jeg er ikke sikker på, hvad du mener med "lave et udtræk fra din DB"? Er det ikke det jeg gør ved at skrive dokumentet med php koden, som skriver indholdet af tabellen ud? Når jeg i phpMyAdmin kigger på det, der står i tabellen, så ser det rigtigt ud med æ, ø og å. Jeg er lidt blank hvad angår idéer nu ...

Erik

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: æ, ø og å i en database

Indlæg af cristian » 2. jul 2014, 18:53

I de fleste databaser er det muligt at downloade et management værktøj. Det bruger jeg selv til Windows DB og MySQL.
I disse kan du lave et udtræk direkte fra databasen. Og du bruger derfor ikke HTML eller PHP til at vise eller hente resultatet.

Til MySQL bruger jeg selv MySQL Workbench 6.1

erikV
Begynder
Indlæg:5
Tilmeldt:1. jul 2014, 14:27

Re: æ, ø og å i en database

Indlæg af erikV » 3. jul 2014, 15:02

Tak for fiffet med Workbench. Det kan være, at jeg på et tidspunkt installerer det. Det ændrer vel ikke noget ved phpMyAdmin? I øjeblikket vil jeg dog godt blive ved phpMyAdmin, da den jo i princippet bør virke. Jeg prøvede at lave en lille tabel helt fra grunden, hvor jeg konsekvent valgte tegnsættet utf8_danish_ci (rent utf-8 er der ikke). Det gav desværre samme resultat. Jeg eksporterede derefter databasen og importerede den phpMyAdmin på mit webhotel. Derefter uploadede jeg min php side med de ændrede passwords til mit webhotel. Desværre fik jeg igen ikke vist æ, ø og å korrekt. Det er meget frustrerende og uforståeligt. Her er indholdet af min lokale php side, dog med password stjernet:

Kode: Vælg alt

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<?php
$server = "localhost";
$brugernavn = "root";
$kodeord = "************";
$db = "lille";

mysql_connect($server,$brugernavn,$kodeord) or die(mysql_error());

echo "Forbundet til MySQL server<br/>";

mysql_select_db($db) or die(mysql_error());

echo "Forbundet til Databasen<br/>";

$data = mysql_query("SELECT * FROM lilletabel") or die(mysql_error());

while ($info = mysql_fetch_array($data))
  {
echo "ID: ".$info['id']."<br/>";
echo "Navn: ".$info['navn']."<br/>";
echo "Tekst: ".$info['tekst']."<br/>"."<br/>";
  }

?>

</body>
</html>



Jeg har brugt jeres fine tutorials til at hente data ud fra tabellen.

Hilsen,

Erik

erikV
Begynder
Indlæg:5
Tilmeldt:1. jul 2014, 14:27

Re: æ, ø og å i en database

Indlæg af erikV » 4. jul 2014, 01:59

Sagen er afklaret! Jeg spurgte på et andet forum og fik tippet at database forbindelsen også skal vide, at det er utf-8. Det kan ske ved at tilføje følgende linje:

Kode: Vælg alt

mysql_query("Set names 'utf8'")
Efter jeg tilføjede den, kom det til at virke med æ, ø og å. I øvrigt er koden ikke så god, har jeg fået at vide. Sikkerheden er ikke i orden. De MySQL kommandoer I anvender i nogle af jeres videoer er på vej ud (deprecated), så måske er det en idé at lave videoerne om, eller helt slette dem fra jeres side. Man bruger i dag mysqli eller MySQL PDO, men det ved I sikkert godt. Under alle omstændigheder har jeres videoer om emnet hjulpet mig, så jeg har forstået de forskellige processer med at lave en lokal database i phpMyAdmin og få php kode til at skrive indholdet af databasen ud. Jeg vil efterfølgende skrive min kode om til PDO efter den glimrende tutorial her:

http://wiki.hashphp.org/PDO_Tutorial_fo ... Developers

Jeg vil sikkert kigge efter andet på jeres side. Fortsæt det gode arbejde!

Hilsen,

Erik V.

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: æ, ø og å i en database

Indlæg af cristian » 4. jul 2014, 12:11

Godt at du fik løst dit problem :)
Og så lærte jeg også noget nyt med hensyn til forbindelsen, selvom det virker noget bagvendt på mig at den også har sit eget charset.

I teorien burde man aldrig lave en SQL kommando uden om en stored procedure. Men så vidt jeg ved har scooter helt styr på hvad der er på vej ud med mere :)

Vh
Cristian

Besvar