Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak zmienić skrypt PHP żeby używał określonego kodowania z SQL
Forum PHP.pl > Forum > Przedszkole
krystkon
Witam!

Jestem jeszcze zielony więc proszę pisać do mnie na poziomie przedszkola czarodziej.gif .
Używam zagranicznego konta hostingu na serwerze, na którym domyślnym kodowaniem zarówno dla PHP jak i MySQL jest zupełnie coś innego niż potrzebne mi kodowanie latin2.

Stworzyłem sobie jednak bazę danych z metodą porównywania napisób w latin2 i wszystko w niej działa dobrze.
Uruchomiłem sobie aplikację PHP na tym serwerze (osCommerce) i niestety ta aplikacja zawiera w sobie taki błąd (nie wiem tego na pewno - ale tak się tylko domyślam) - że jej skrypty nie ustalają sposobu kodowania przy łączeniu się z bazą danych albo je ustalają błędny sposób kodowania. I choć w bazie danych wszsytko jest OK zapisane - na stronie pojawiają się questionmark.gifquestionmark.gifquestionmark.gif. Sądzę, że PHP używa domyślnego dla serwera sposóbu kodowania przy łączeniu się z bazą i jest to kodowanie inne niż latin2.

Znalazłem takie rozwiązanie, które dorzucam do każdego skryptu php:
Kod
mysql_query("SET CHARACTER SET latin2");
   mysql_query("SET NAMES latin2");

i większość zaczyna działać poprawnie - ale nie wszystko.

I teraz mam np. taki skrypt, który zawiera w sobie element:
Kod
<?php echo tep_customer_greeting(); ?>


I ten element wyświetla mi się na stronie niepoprawnie. Czy mogę jakoś w zakresie tego elementu
Kod
<?php echo tep_customer_greeting(); ?>
umieścić
Kod
mysql_query("SET CHARACTER SET latin2");
   mysql_query("SET NAMES latin2");
i jeżeli tak to w jaki sposób - musi być chyba jakiś element poprzedający - bo samo wkeljenie tego kodu nic nie zmienia.

Czy to jest w ogóle sensowne rozwiązanie, żeby w taki sposób zmieniać oryginalne skrypty PHP?
Jak do tej pory nie znalazłem innego sposobu rozwiązania tego problemu - poza ewentualnie przejściem na polskie konta webhostingu - czego nie chcę z wielu względów.

Czy być może w skryptach PHP mam szukać jakiś ustawień takiego łączenia się z bazą danych - co generuje błąd?
Zastanwiam się nad tym pownieważ w ramach tego konta korzystam z phpMyAdmin do przeglądania bazy MySql i o dziwo - pomimo, że ta aplikacja jest również oparta na PHP wszytko wyświetla się poprawnie i nie potrzeba zmianiać skryptów. To że wyświetla się poprawnie wiem na pewno bo jeszcze sprawdzałem za pomocą MySQL Query Browser.

Proszę o pomoc.
SirZooro
tep_customer_greeting() to jest funkcja, więc zerknij do niej co ona robi - może tam da się dodać te dwie komendy.
gutek84
Jezeli poruwnujesz np. dwa varchary to musza miec te same kodowanie. Poszukaj w poszczegulnych kolumnach w tabelach w bazie jakie ustawione sa kodowania. Wszystkie porownywane musza byc identyczne. Dobrym narzedziem do tego jest phpMyAdmin. Kodowanie zawsze bedzie ustawione takie jakie masz w bazie! I jesli porownujesz tabele ze swojej tylko bazy to musisz miec rozne kodowania!
pozdr
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.