[PHP][MySQL] Polskie znaki w bazie danych

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Lysoleq
Piegowaty Guziec
Piegowaty Guziec
Posty: 10
Rejestracja: 23 mar 2010, 06:08
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Xfce
Architektura: x86

[PHP][MySQL] Polskie znaki w bazie danych

Post autor: Lysoleq »

Witam,
Chciałbym zasięgnąć pomocy bardziej doświadczonych użytkowników baz danych co do następującego problemu wałkowanego na wielu forach, z którym mimo wszystko nie potrafię sobie poradzić.

PROBLEM:
Gdy wstawiam dane do bazy przez skonstruowany, prosty, formularz mam polskie czcionki na stronach internetowych z formularzem [iso-8859-2] natomiast po zapisaniu danych w bazie danych [iso-8859-2, latin2_general_ci] w tabelach zamiast polskich znaków widzę same krzaki.
Gdy do bazy wprowadzam dane przez konsole mysql w terminalu baza danych zapisuje w tabelach polskie znaki.

Poniżej zamieszczam kody plików:

Plik blog_formularz.php:

Kod: Zaznacz cały

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
 
<head> 
<title>Dodawanie wpisów do Bloga</title> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" > 
<meta name="keywords" lang="pl" content="śluby"> 
<link rel="stylesheet" type="text/css" href="style.css"> 
<meta name="robots" content="all">
</head> 
 
<body> 

<form action="blog_dodaj_wpis.php" method="post">
<p class="standard_form_describtion_text">Podaj temat wpisu:<br><textarea class="form_text" name="tytul" cols="64" rows="2"></textarea><br>
Podaj treść wpisu:<br><textarea class="form_text" name="tresc" cols="64" rows="15"></textarea><br>

<?php require("kategorie.php");?>
<input class="form_text" type="text" name="autor" value="Sebastian"/><br>
<input type="submit" value="Dodaj wpis" /></p>
</form>
</body>
</html>
Plik blog_dodaj_wpis.php

Kod: Zaznacz cały

<html>
<head>
<title>Dodano wpis</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" > 

</head>
<body>

<?php
$tytul = $_POST['tytul'];
$tresc = $_POST['tresc'];
$data = date('Y-m-d H:i:s');
$kategoria = $_POST['kategorie'];
$autor = $_POST['autor'];

if (!$tytul||!$tresc||!$tytul||!$kategoria||!$autor)
{echo 'Nie podano wszystkich wymaganych pól';
exit;}

$tytul = addslashes($tytul);
$tresc = addslashes($tresc);
$kategoria = addslashes($kategoria);
$autor = addslashes($autor);

$polaczenie = mysql_connect("localhost","urzytkownik","haslo");

if (mysqli_connect_errno())
	{echo 'Błąd: Polączenie z MySQL nie powiodlo się.<br>';}
else
	{echo 'Nawiązano pbołączenie z MySQL.<br><br>';}

mysql_select_db("BAZA",$polaczenie);
mysql_query('set names \'latin2\'');
mysql_query('SET CHARACTER SET \'latin2\'');
mysql_query('set collation_connection=\'latin2_general_ci\'');
//$sql="INSERT into blog_wpisy values ('".$tytul."','".$tresc."','".$data."','".$kategoria."','".$autor."')";

$ins = @mysql_query("INSERT INTO blog_wpisy SET tytul='$tytul', tresc='$tresc', data='$data', kategorie='$kategoria', autor='$autor'"); 
     
    if($ins) echo "Rekord został dodany poprawnie"; 
    else echo "Błąd nie udało się dodać nowego rekordu"; 

echo	'Wysyłanie danych do BAZY <br>';
echo $tytul.'<br>' ;
echo $tresc.'<br>';
echo $data.'<br>';
echo $kategoria.'<br>';
echo $autor.'<br>';
?>
</body>
</html>
Oba pliki zapisane są jako iso-8859-2. Przeszukałem już kilkadziesiąt wątków związanych z tym problemem i nie potrafię znaleźć rozwiązania. Prosze o wskazanie mi miejsca w którym popełniam błąd, lub co mogę zrobić inaczej żeby zapisywać dane do bazy z polską czcionką, oraz wyświetlać polską czcionkę na stronach.
Awatar użytkownika
mate_haru
Sędziwy Jeż
Sędziwy Jeż
Posty: 47
Rejestracja: 05 paź 2006, 12:42
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: Fluxbox
Architektura: x86_64
Kontakt:

Re: [PHP][MySQL] Polskie znaki w bazie danych

Post autor: mate_haru »

PHP nie znam, ale programując w Javie miewałem problemy z kodowaniem znaków i bazą MySQL. Chodziło wprawdzie o kodowanie UTF-8, ale to w sumie nie ma większego znaczenia. Rozwiązanie znalazłem pod tym adresem. Chodzi tam wprawdzie o systemy pisane w Javie, jednak część wskazówek jest niezależna od technologii i być może znajdziesz tam informację, która okaże się rozwiązaniem problemu w Twojej aplikacji.
Awatar użytkownika
kabanek
Zakręcona Traszka
Zakręcona Traszka
Posty: 592
Rejestracja: 23 cze 2009, 20:34
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

Re: [PHP][MySQL] Polskie znaki w bazie danych

Post autor: kabanek »

a jakie masz kodowanie w komórkach w tabeli?
ja zawsze daję latin2_general_ci i działa ładnie
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość