Driver å lager en hjemmeside for koret jeg synger i, og har problemer
med æøå og lign. bokstaver i gjesteboken. Siden kan ses på
http://paris.uib.no/gjestebok.php. Koden er hentet fra
http://www.php-mysql-tutorial.com/mysql-php-guestbook.php og kun
modifisert en liten smule. Jeg har nettopp begynt å programmere i PHP
og skjønner derfor ikke all koden. Er det mulig å gjøre dette på en
måte sånn at jeg kan få norske bokstaver til å oppføre seg fint i
gjesteboken? gjestebok.php inneholder følgende kode (config.php og
opendb.php er bare filer som brukes for å koble seg til
Mysql-databasen):
<?php
include 'config.php';
include 'opendb.php';
if(isset($_POST['btnSign']))
{
include 'config.php';
include 'opendb.php';
$name = trim($_POST['txtName']);
$email = trim($_POST['txtEmail']);
$message = trim($_POST['mtxMessage']);
if (!get_magic_quotes_gpc())
{
$message = addslashes($message);
}
if (!isset($email))
{
$email = '';
}
$query ="insert into guestbook (name,
email,
message,
entry_date)
values ('$name',
'$email',
'$message',
current_date)";
mysql_query($query) or die('Error, query failed');
header('Location: ' . $_SERVER['REQUEST_URI']);
exit;
}
?>
<?php
$pageid = "Gjestebok";
include("top.php");
?>
<div id="container1">
<div id="content_main">
<h2>Gjestebok</h2>
<p>Skriv en hilsen til Riddere og Knekter, Jomfruer i nød er
særlig velkomne.</p>
<form method="post" name="guestform">
<p><label for="name">Navn:</label>
<input name="txtName" type="text" size="30" maxlength="50" id="name"
/></p>
<p><label for="email">E-post:</label>
<input name="txtEmail" type="text" size="30" maxlength="50" id="email"
/></p>
<p><label for="message">Skriv inn din hilsen her:</label>
<textarea name="mtxMessage" cols="60" rows="5"
id="message"></textarea></p>
<p><input name="btnSign" type="submit" value="Signer gjesteboken"
id="submit" /></p>
</form>
<?php
$rowsPerPage = 10;
$pageNum = 1;
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
$offset = ($pageNum - 1) * $rowsPerPage;
$query = "select id,
name,
email,
message,
DATE_FORMAT(entry_date, '%d.%m.%Y') ".
"from guestbook ".
"order by id desc ".
"limit $offset, $rowsPerPage";
$result = mysql_query($query) or die('Error, query failed');
$query2 = "select count(id) as numrows from guestbook";
$result2 = mysql_query($query2) or die('Error, query failed');
$row2 = mysql_fetch_array($result2, MYSQL_ASSOC);
$numrows = $row2['numrows'];
$maxPage = ceil($numrows/$rowsPerPage);
$nextLink = '';
if ($maxPage > 1)
{
$self = $_SERVER['PHP_SELF'];
$nextLink = array();
for ($page = 1; $page <= $maxPage; $page++)
{
$nextLink[] = "<a href=\"$self?page=$page\">$page</a>";
}
$nextLink = "Side " . implode(' » ', $nextLink);
}
mysql_close($conn);
if ($maxPage > 1)
{
echo "<p>$nextLink</p>";
}
if(mysql_num_rows($result) == 0)
{
echo "<hr />\n";
echo "<p>Gjesteboken er tom.</p>\n";
}
else
{
while($row = mysql_fetch_array($result))
{
list($id, $name, $email, $message, $date) = $row;
$name = htmlentities($name);
$email = htmlentities($email);
$message = htmlentities($message);
$message = nl2br($message);
echo "<hr />\n";
echo "<p><strong>$name</strong>";
if ($email != '')
{
echo " - <a href=\"mailto:$email\">$email</a>";
}
echo "</p>\n";
echo "<p>$message</p>\n";
echo "<p class=\"added\">$date</p>\n";
}
}
if ($maxPage > 1)
{
echo "<hr /><p>$nextLink</p>";
}
?>
</div>
</div>
<?php
include("bottom.php");
?>
> med æøå og lign. bokstaver i gjesteboken. Siden kan ses på
> http://paris.uib.no/gjestebok.php. Koden er hentet fra
Det kan jo være feilen ligger i at du har ISO-8859-1 i headeren på siden,
mens den blir servert som UTF-8 av tjeneren. Prøv noe slikt som dette helt
øverst i koden.
<?php
header("Content-Type: text/html; charset=ISO-8859-1");
?>
... og se om ikke det kan hjelpe.
Flott at du fikk løst problemet, men som et lite tips vil jeg minne deg
om å være konsekvent på bruken av slike headere slik at du bare ikke
magisk løste problemet, men faktisk ser hvordan du løste problemet og
hvorfor. Dette vil garantert spare deg for mye problemer i fremtiden
relatert til ÆØÅ, og tegnsett er ikke så ABC som man skulle tro.
Kim Steinhaug
http://www.steinhaug.no/