Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa MyMenuGen
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
ravczy
WItam,

Zainteresowałem się klasą MyMenuGen, (http://www.phpclasses.org/browse/package/3778.html) która generuje automatycznie menu rozwijane. Używa PHP i MySQL. Największy problem sprawiają mi polskie znaki w menu. Wpisując np. Strona główna pojawiają się krzaczki, natomiast w bazie danych wartość ta zapisuje się następująco:

Strona główna

Klasa przedstawia się bardzo obiecująco. Panel administracyjny pozwala na dodawanie nowych pozycji do bazy. Chciałem to wykorzystać w moim projekcie, lecz przeszkodą są te polskie znaki.

Może ktoś z was zna inną klasę która działa by podobnie lub zetkną się z MyMenuGen i potrafi mi pomóc.

Pozdrawaim
Ravczy


Pod tym linkiem http://lesinski.biz/projekty/menu/example2.php każdy może potestować ten skrypt i sprawdzić jego działanie. Może się ktoś do niego przekona i pomoże w rozwiązaniu problemu smile.gif
l0ud
Spróbuj na samym początku zaraz po podłączeniu do bazy wykonwywać zapytanie:
  1. SET NAMES utf8;


Bo prawdopodobnie działa ona teraz na latin2. Problem w tym, że w swoich projektach będziesz musiał zrezygnować z kodowania ISO na rzecz UTF-8.
ravczy
w dokumencie XHTML mam zdeklarowany język polski oraz kodowanie utf-8. Dodałem SET NAMES utf-8, ale to niestety nie pomaga. Faktycznie jest coś na styku przeglądarka a baza danych.

Dziwne jest to co pojawia się w bazie danych, czyli znaki typu :

śąś

zamiast

śąś

zawsze poawialy się znaki zapytania, albo coś w tym stylu. Wałczę z tym już kilka godzin i nadal bezskutecznie.

Zauważyłem też jedną rzecz. Jeśli dane zmienie z PHPMYADMIN to polskie znaki się ładnie wyświetlają. Jeżeli chociażby dokonam edycji danych przez formularz na stronie, to znaki znowu się posypują i pojawiają się znaczki.


Pod dłuższym czasie doszedłem do wniosku, że to nie wina kodowania po stronie MySQL ani PHP. Okazało się, że autor klasy użył funkcji html_entity_decode, co powodowało dziwne zachowanie całości kodu.
Przy metodzie $myMenu->generateMenuStructure autor nie użył tej funkcji i stąd cały problem. Wystarczyło wywołać metode poprzez html_entity_decode($myMenu->generateMenuStructure(), ENT_QUOTES); i wszystko gra smile.gif

w example.php w lini około 94 trzeba użyć też html_entity_decode($myMenu->menu_title, ENT_QUOTES);

Pozdrawaim
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.