jimij
1.04.2008, 14:49:57
mam taki problem
nie zapisuje niektórych pl znaków do bazy np m.in "ę" i "ń" zapisuje natomiast "ś" "ł" "ą", "ó" ...
ale jak dam do zapisu słowo gdzie "ę" jest za literą np "ś" czy inną zapisującą to "ę" też zapisze
czyli np słowo "aaaśęaaa" zapisze do bazy jako "aaaśęaaa"
a
czyli np słowo "aaaęśaaa" zapisze do bazy jako "aaaaaa" wycina 2 PL litery
a
czyli np słowo "aaaśaaa" zapisze do bazy jako "aaaśaaa"
o co tu chodzi?


plik zapisujacy ma kodowanie ISO-8859-2
pole w tabeli jest na latin2_general_ci
dodałem też:
mysql_query("SET NAMES latin2");
mysql_query("SET collation_connection = latin2_general_ci");
mysql_query("SET CHARACTER SET latin2");
mysql_query(" set character_set_connection=latin2");
mysql_query(" set character_set_client=latin2");
mysql_query(" set character_set_database=latin2");
mysql_query(" set character_set_results=latin2");
mysql_query(" set character_set_server=latin2");
mysql_query(" set collation_database=latin2_general_ci");
mysql_query(" set collation_server=latin2_general_ci");
i nie działa
zzeus
1.04.2008, 19:22:18
Nie możesz się od razu przeżucić na utf8 ?
jimij
1.04.2008, 20:00:46
a może ktoś odpowie spróbuje odpowiedzieć na pytanie?
wszystko działało tak jak jest przez parę lat dopóki ser administrator nie przeniósł tego na inny "lepszy" serwer :-) i nie chce mi się nic przerabiać, czy ktoś się domyśla choć trochę o co może chodzić
halo nie ma mocnych?
to przecież przedszkole??
no dobrze przedszkolaku - tylko powiedz z czego mamy ci powróżyć ...

nie podałeś żadnych danych ... wersja PHP, wersja MySQL, struktura tabeli, kod PHP zapisujący / odczytujący dane w bazie ... gdzieś masz błąd - to jest pewne. ja mam na imię Leszek. zgadnij ile ważę? znasz moje imię, więc zagadka na pewno jest prosta...
Pilsener
2.04.2008, 08:43:14
W czym zapisujesz te dane? W notatniku? I co z tego, że plik zapisujący ma ISO-8859-2, jak polskie znaki w nim zapisane to mogą być krzaczory. W phpmyadmin wyświetla i dodaje dobrze?
proszę bardzo: (czy jeszcze coś podać?)
PHP Version 5.2.1
Configure Command
'./configure' '--with-apxs=/usr/sbin/apxs' '--enable-safe-mode' '--with-exec-dir--with-bz2' '--with-tiff-dir' '--with-gdbm' '--enable-ftp' '--with-gd=/usr/local' '--with-zlib-dir=/usr/local/' '--with-jpeg-dir=/usr/local/php-4.3.10/jpeg-6b/' '--with-png-dir=/usr/local/php-4.3.10/libpng-1.2.6-config/' '--with-gettext' '--with-curl' '--with-java' '--with-mysql' '--with-config-file-path=/etc/apache/' '--enable-mbstring=all' '--with-pdo-mysql'
Configuration
PHP Core
default_charset iso-8859-2 iso-8859-2
apache
Apache Version Apache/1.3.33 (Unix) PHP/5.2.1 mod_throttle/3.1.2
Loaded Modules mod_php5, mod_security, mod_throttle, mod_setenvif, mod_so, mod_unique_id, mod_log_forensic, mod_usertrack, mod_headers, mod_expires, mod_digest, mod_auth_dbm, mod_auth_anon, mod_auth, mod_access, mod_rewrite, mod_alias, mod_speling, mod_actions, mod_imap, mod_asis, mod_dir, mod_autoindex, mod_include, mod_info, mod_status, mod_negotiation, mod_mime, mod_mime_magic, mod_log_config, mod_define, mod_vhost_alias, http_core
Apache Environment
HTTP_ACCEPT_CHARSET ISO-8859-2,utf-8;q=0.7,*;q=0.7
HTTP Headers Information
Accept-Charset ISO-8859-2,utf-8;q=0.7,*;q=0.7
HTTP Response Headers
Content-Type text/html; charset=iso-8859-2
mysql
Client API version 4.0.20
polecenie zapisujące np takie:
$query="UPDATE tbl_kat SET Nazwa='$_POST[Nazwa]' WHERE Id LIKE '$_POST[id]'";
$mysql_result=mysql_query($query);
a widać wynik/brak wyniku zapisu w phpadminie np, czy też zwykły select w tym samym pliku
problem pojawił się na wszystkich stronach przeniesionych na nowy serwer,
w każdej tabeli, w każdym miejscu gdzie jest insert czy update, obojętnie
wszystko działało na poprzednim serwerze
-jimij-
2.04.2008, 09:02:19
Cytat(Pilsener @ 2.04.2008, 08:43:14 )

W czym zapisujesz te dane? W notatniku? I co z tego, że plik zapisujący ma ISO-8859-2, jak polskie znaki w nim zapisane to mogą być krzaczory. W phpmyadmin wyświetla i dodaje dobrze?
chyba się nie rozumiemy?
dane zapisuję do bazy formularzem ze strony www
jak wpiszę w inputa aaaśęaaa to zapisze mi w mysqlu ok - aaaśęaaa
a jak wpiszę w inputa aaaęśaaa to nie zapisze ok tylko aaaaaa
jakby litera "ę" mu się nie podoba, zamiast "ś" wpisując większość innych pl liter efekt jest ten sam, jak "ę" jest poprzedza inne polskie znaki w słowie to do bazy nie zapisze się żaden pl znak, a jak przed "ę" w słowie wstawię jakiś inny pl znak to wszystko zapisze jak należy
jesteś pewien, że problem jest w bazie, a nie z przesyłaniem danych z formularza? zrób test:
<?php
$query="UPDATE tbl_kat SET Nazwa='$_POST[Nazwa]' WHERE Id LIKE '$_POST[id]'";
?>
i upewnij się, że w zapytaniu jest wszystko ok... poza tym składnia tego UPDATE jest kiepska, sprawdź:
<?php
$query="UPDATE tbl_kat SET Nazwa='".$_POST['Nazwa']."' WHERE Id LIKE '".$_POST['id']."';";
?>
zgadza się nie przekazuje, ale dlaczego tak


dla wpisanego w input aaaśęaaa echo $query; daje:
UPDATE tbl_kat SET Nazwa='aaaśęaaa' WHERE id LIKE '15';
a
dla wpisanego w input aaaęśaaa echo $query; daje:
UPDATE tbl_kat SET Nazwa='aaaaaa' WHERE id LIKE '15';
-jimij-
2.04.2008, 09:28:28
dopisałem do elementu FORM:
enctype="multipart/form-data"
i teraz działa! obojętnie czy "ęś" czy "śę"
ale kto mi wytłumaczy dlaczego tak?


?
cuda jakieś