PDA

Zobacz pełną wersję : Implementacja php i mysql do joomla



stevcio
05-03-2009, 17:30
Cześć,
zrobiłem sobie plik administracja.php, która odczytuje rekordy z bazy danych. Osobno plik działa idealnie, jednak jak wstawię do artykułu w joomla poprzez plugin JUMI to nie przetwarza polskich znaków.
Poniżej załączam dwa jpg z widoczną różnicą w wyglądzie:

Wygląd jako osobny plik php:
http://ftp2.server7757.net/ecv_1230062764/joomla/bez_joomla.jpg

Wygląd po implementacji do artykułu w joomla:

http://ftp2.server7757.net/ecv_1230062764/joomla/joomla_jumi.jpg
Jak widać na obrazku powyżej tekst "Proszę wyszukać adres. Albo zaopatrzyć się w coś wcześniej związanego.", który jest wpisany w treść artykułu posiada polskie znaki, natomiast tekst w tabelce ich nie ma.

Co jest przyczyną braku polskich znaków? Czy jest jakiś inny moduł/komponent do joomla 1.5 umożliwiający wstawianie kodu php?

zwiastun
05-03-2009, 17:48
A obejrzyj to sobie w bazie danych. Na 99% w tabeli BD też są znaki zapytania. Powód: tabela kodowana jest w latin1

stevcio
05-03-2009, 18:16
W bazie danych wszystko gra - polskie znaki są.

Jest coś takiego jak dekodowanie "w locie"? Chodzi o to, że za pomocą jumi odczytałem rekordy zgromadzone w tabeli jos_content -> title i też tekst wyświetlał się bez polskich znaków, a przecież nazwa danej podstrony zawiera polskie znaki.

Problem musi być po stronie joomli a nie bazy danych, bo jak inkluduje plik top.php z polskimi znakami poprzez wpisanie kodu bezpośrednio do index.php, to również nie wyświetla polskich znaków.

ojobazos
05-03-2009, 23:57
Albo przeczytaj bazę obiektem, ktorym robi to joomla - cokolwiek to jest nie wiem, nie orientuję się, zarobiony jestem... powinno być ok. Masz wtedy poustawiane dane połączenia przez J!.
Albo, jeśli masz własne wywołania do bazy, czyli tworzysz nowe połaczenie, to na samym początku, tylko raz, wywołaj query 'set names <kodowanie>'. gdzie <kodowanie> to np. 'utf8' czy 'latin2'. Opis jest tutaj: http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html.

stevcio
06-03-2009, 04:57
Coś więcej możesz napisać o tym czytaniu bazy przez joomlę?

hesar
06-03-2009, 09:17
http://api.joomla.org/Joomla-Framework/Database/JDatabaseMySQL.html

dokumentacja jest tu

a teraz wroce do twojego problemu :)
jak ci sie wysweitla ta strona jak zmienisz na sztywno kodowanie przegladarki na inne (utf8,iso-8859-2,windows-1250)
jakie collate masz ustawione dla tych tabel z ktorych pobierasz dane?

ojobazos
06-03-2009, 10:31
Ja się nie orientuję, ale zajrzałem tak na szybko do pierwszego z brzego kodu z J! i tam stoi tak (to wewnątrz funkcji jest):

===============================
global $database;

$query = "SELECT .... itak dalej";
$database->setQuery( $query );
$rows = $database->loadObjectList();

if ( $rows ) {
foreach ( $rows as $row ) {

===============================

$database to własnie ten globalny obiekt, którym J! rozmawia z bazą. Jest pewnie klasy 'JDatabaseMySQL', do której specyfikacji podał linka hesar. To teraz masz już wszystko, tylko pisać.

"Patrz w kod Mefistofilu" ;)