Mam problem z kodowaniem znaków w php... dokladniej chodzi o to że mam formularz który wysyła dane do bazy danych mysql.
Baz danych ma kodowanie znaków:
jak tworze tabele to wpisuje ->
engine=InnoDB DEFAULT CHARSET=utf8;
Metoda porównywania napisów w mysql: utf8_polish_ci
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
wszytsko ładnie zapisuje się w bazie i odczytuje na stronie ale problem jest w tym że jak wpisuje tekst polski w pole input i gdy wciskam OK to następuje weryfikacja formularza i jeśli są błędy to odświeża formularz i wpisuje dane wcześniej wpisane w pola input - no i niestety już pole zamist polskich znaków ma krzaki :-( (jak formularz jest oki to wszytskie polskie znaki są wysłane do bazy i tam się dobrze zapisują oraz odczytują gdy je pobieram w php)
Ponieżej kawalek kodu który działa i można przetestować (po wisaniu slowa "aaaaaaaa" i kliknieciu oki wszystko jest dobrze ale gdy już wpiszę "śąćżłóźźź" wyskakują krzaki :-( )
Kod
<?php ob_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
display_form(array());
} else {
$errors = validate_form();
if (count($errors)) {
display_form($errors);
} else {
$imie_k=$_POST['imie_k'];
try
{
dodaj_nowego_klienta($imie_k);
komunikat('Dodano nowego klienta');
}
catch (Exception $e)
{
blad($e->getMessage());
exit;
}
}
}
function display_form($errors) {
$defaults['imie_k'] = isset($_POST['imie_k']) ? htmlentities($_POST['imie_k']) : '';
?>
<script><!--
function displayWindow(url, width, height) { var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + ',resizable=0,scrollbars=yes,menubar=no' );}
//-->
</script>
<div id='maincontent'>
<h1 class='first'></h1>
<h1>Dodaj klienta do bazy</h1>
<form method=post action='<?php echo $_SERVER['SCRIPT_NAME'] ?>'>
<h2>
<table>
<tr>
<td>Imie:<font color=red > * </font></td>
<td valign=top><input type=text name=imie_k value='<?php echo $defaults['imie_k'] ?>'
size=30 maxlength=20</td></tr>
<td colspan=2 align=center>
<input class='button' type=submit value="OK"></td>
</h2>
</form>
<p class='last'></p>
</div><!-- end div maincontent -->
<?php
}
function print_error($key, $errors) {
if (isset($errors[$key])) {
echo "<dd class='error' >{$errors[$key]}</dd>";
}
}
function validate_form() {
global $flavors;
$errors = array();
if (isset($_POST['imie_k']) && (strlen($_POST['imie_k']) > 3))
{
$errors['imie_k'] = '<font color=red > długa nazwa</font>';
}
return $errors;
}
?>
</html>
<?php ob_end_flush(); ?>