powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
16 сообщений из 16, страница 1 из 1
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33645498
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставил joomla но сайт многоязычный поэтому еще и компонент Joomfish.
Есть таблица где текстовое поле в кодировке cp-1251, указываю после конекта
mysql_query("set NAMES='cp1251'");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251'");

это в классе database, который работает с БД в джумле.
Во фрон энде выводится все коректно.
А в бэкэнде в админке при редактировании и просмотре переводов в компоненте joomfish выводит знаками вопроса.
Посмотрел, там есть
class mlDatabase extends database
но он не переопределяет нигде кодировку. Задал в скрипте админки я еще указал кодировку. Просмотру и редактированию полегчало. Вижу русский язык.
Но сохраняет почему-то знаками вопроса.

Где еще рытся не представляю, русский вариант там сохраняется в таблице в поле специальном. Я проследил переменную с переводом вплоть до запроса. Она не меняет кодировку.
Кодировка на странице стоит windows-1251
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33645705
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На сколько я знаю достаточно конструкции SET NAMES cp1251 для того, что бы настроить кодировку и колейшен, т.е. конструкции
Код: plaintext
1.
2.
3.
mysql_query ("set character_set_client='cp1251'"); 
mysql_query ("set character_set_results='cp1251'"); 
mysql_query ("set collation_connection='cp1251'");
не нужны. В люом случае проверить это можно так
Код: plaintext
1.
2.
SET NAMES cp1251;
SHOW VARIABLES;
Далее, насчет того, что криво сохраняется в базе. Что говорит
Код: plaintext
1.
2.
SHOW CREATE TABLE `имя таблицы`
и
SHOW VARIABLES

Думаю, что если никто из псетителей нашего форума не даст рац предложение, то есть смысл топик перенести в раздел MySQL. Подождем.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33645882
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело в том что тут пока непонятно как она вообще сохраняет.
Вот как все произходит

файл admin.joomfish.php строка 227

код для сохраниения
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
switch ($this->task) {

  case "save":

		saveTranslation( $joomFishManager, $language_id, $catid, $contentid, $mbfc_id );

		showTranslationOverview( $joomFishManager, $select_language_id, $catid );

		break;


функции
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
function saveTranslation( $joomFishManager, $language_id, $catid, $id, $mbfc_id ) {

	global $database, $mainframe;

	$actContentObject=null;	

	if( isset($catid) && $catid!="" ) {

		$contentElement = $joomFishManager->getContentElement( $catid );

		$actContentObject = new ContentObject( $language_id, $contentElement );

		$actContentObject->bind( $_POST );

		$actContentObject->store();

	}

}

function showTranslationOverview( $joomFishManager, $language_id, $catid ) {

	global $database, $mainframe, $option;

		mysql_query("set NAMES='cp1251'"); 
        mysql_query("set character_set_client='cp1251'"); 
		mysql_query("set character_set_results='cp1251'"); 
		mysql_query("set collation_connection='cp1251'");

	$limit = $mainframe->getUserStateFromRequest( "viewlistlimit", 'limit',  10  );

	$limitstart = $mainframe->getUserStateFromRequest( "view{$option}limitstart", 'limitstart',  0  );

	$search = $mainframe->getUserStateFromRequest( "search{$option}", 'search', '' );

	$search = $database->getEscaped( trim( strtolower( $search ) ) );



	// Build up the rows for the table

	$rows=null;

	$total= 0 ;

	if( isset($catid) && $catid!="" ) {

		$contentElement = $joomFishManager->getContentElement( $catid );

		$tranFilters = getTranslationFilters($catid,$contentElement);

		$database->setQuery( $contentElement->createContentSQL( $language_id, null, $limitstart, $limit,$tranFilters ) );

		$rows = $database->loadObjectList();

		if ($database->getErrorNum()) {

			echo $database->stderr();

			return false;

		}

		

		$database->setQuery( $contentElement->countContentSQL($language_id) );

		$result = $database->loadObjectList();

		echo $database->getErrorMsg();

		$total = count( $result );

		

		// Manipulation of result based on further information

		for( $i= 0 ; $i<count($rows); $i++ ) {

			$contentObject = new ContentObject( $language_id, $contentElement );

			$contentObject->readFromRow( $rows[$i] );

			$rows[$i] = $contentObject;

		}



		$filterHTML=array();

		foreach ($tranFilters as $tranFilter){

			$afilterHTML=$tranFilter->_createFilterHTML();

			if (isset($afilterHTML)) $filterHTML[] = $afilterHTML;

		}



	}

потом смотрю
еще два скрипта database.php это главный класс работы с БД джумлы
и второй mldatabase.class.php это тот который наследуется из него уже джумфише (компоненте)

Еще есть скрипт joomfish.class.php с набором классов для работы компонента. тоесть он как библиотека своего рода, все файлы я приатачил, может я там пропустил какой механизм.

Там есть класс ContentObject joomfish.class.php 674
у него есть метод формирования контента bind() 754
и метод непосредственно сохранения store() 999
Но как он работает я так не разобрался.
Всмысле непосредственная вставка.
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33646073
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в saveTranslation - проверьте кодировки клиента? Вызовите SHOW VARIABLES.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33647573
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!cв saveTranslation - проверьте кодировки клиента? Вызовите SHOW VARIABLES.
----------------------------------------
Артисты не приехали, приехали цыгане

Код: plaintext
1.
<pre>UPDATE etgc_jf_content SET `language_id`='3',`reference_id`='55',`reference_table`='menu',`reference_field`='name',`value`='Главная',`original_value`='8cf04a9734132302f96da8e113e80ce5',`modified`='2006-04-05 13:36:16',`modified_by`='62',`published`='1' WHERE id='41'</pre>

вот что выдало. тоесть поле value`='Главная' олучило в нужном виде. А какого лешего в БД сохранило не в том что нужно.

в БД поле value в кодировке хранится cp1251_general_ci ...это всмысле сравнение
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33647593
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ай сорри не то вставил, вот что мне выдало
вот та функция

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
function saveTranslation( $joomFishManager, $language_id, $catid, $id, $mbfc_id ) {

	global $database, $mainframe;

	$actContentObject=null;	

	if( isset($catid) && $catid!="" ) {

		$contentElement = $joomFishManager->getContentElement( $catid );

		$actContentObject = new ContentObject( $language_id, $contentElement );

		$actContentObject->bind( $_POST );

		$actContentObject->store();

	}
$database->setQuery("SHOW VARIABLES");
$rows = $database->loadObjectList();
foreach ($rows as $row){
  print_r($row);
  echo "<br>";
}
exit();
}

вот результат

stdClass Object ( [Variable_name] => back_log [Value] => 50 )
stdClass Object ( [Variable_name] => basedir [Value] => / )
stdClass Object ( [Variable_name] => binlog_cache_size [Value] => 32768 )
stdClass Object ( [Variable_name] => bulk_insert_buffer_size [Value] => 8388608 )
stdClass Object ( [Variable_name] => character_set_client [Value] => latin1 )
stdClass Object ( [Variable_name] => character_set_connection [Value] => latin1 )
stdClass Object ( [Variable_name] => character_set_database [Value] => latin1 )
stdClass Object ( [Variable_name] => character_set_results [Value] => latin1 )
stdClass Object ( [Variable_name] => character_set_server [Value] => latin1 )
stdClass Object ( [Variable_name] => character_set_system [Value] => utf8 )
stdClass Object ( [Variable_name] => character_sets_dir [Value] => /usr/share/mysql/charsets/ )
stdClass Object ( [Variable_name] => collation_connection [Value] => latin1_swedish_ci )
stdClass Object ( [Variable_name] => collation_database [Value] => latin1_swedish_ci )
stdClass Object ( [Variable_name] => collation_server [Value] => latin1_swedish_ci )
stdClass Object ( [Variable_name] => concurrent_insert [Value] => ON )
stdClass Object ( [Variable_name] => connect_timeout [Value] => 10 )
stdClass Object ( [Variable_name] => datadir [Value] => /var/lib/mysql/ )
stdClass Object ( [Variable_name] => date_format [Value] => %Y-%m-%d )
stdClass Object ( [Variable_name] => datetime_format [Value] => %Y-%m-%d %H:%i:%s )
stdClass Object ( [Variable_name] => default_week_format [Value] => 0 )
stdClass Object ( [Variable_name] => delay_key_write [Value] => ON )
stdClass Object ( [Variable_name] => delayed_insert_limit [Value] => 100 )
stdClass Object ( [Variable_name] => delayed_insert_timeout [Value] => 300 )
stdClass Object ( [Variable_name] => delayed_queue_size [Value] => 1000 )
stdClass Object ( [Variable_name] => expire_logs_days [Value] => 0 )
stdClass Object ( [Variable_name] => flush [Value] => OFF )
stdClass Object ( [Variable_name] => flush_time [Value] => 0 )
stdClass Object ( [Variable_name] => ft_boolean_syntax [Value] => + -><()~*:""&| )
stdClass Object ( [Variable_name] => ft_max_word_len [Value] => 84 )
stdClass Object ( [Variable_name] => ft_min_word_len [Value] => 4 )
stdClass Object ( [Variable_name] => ft_query_expansion_limit [Value] => 20 )
stdClass Object ( [Variable_name] => ft_stopword_file [Value] => (built-in) )
stdClass Object ( [Variable_name] => group_concat_max_len [Value] => 1024 )
stdClass Object ( [Variable_name] => have_archive [Value] => NO )
stdClass Object ( [Variable_name] => have_bdb [Value] => NO )
stdClass Object ( [Variable_name] => have_blackhole_engine [Value] => NO )
stdClass Object ( [Variable_name] => have_compress [Value] => YES )
stdClass Object ( [Variable_name] => have_crypt [Value] => YES )
stdClass Object ( [Variable_name] => have_csv [Value] => NO )
stdClass Object ( [Variable_name] => have_example_engine [Value] => NO )
stdClass Object ( [Variable_name] => have_geometry [Value] => YES )
stdClass Object ( [Variable_name] => have_innodb [Value] => DISABLED )
stdClass Object ( [Variable_name] => have_isam [Value] => NO )
stdClass Object ( [Variable_name] => have_ndbcluster [Value] => NO )
stdClass Object ( [Variable_name] => have_openssl [Value] => NO )
stdClass Object ( [Variable_name] => have_query_cache [Value] => YES )
stdClass Object ( [Variable_name] => have_raid [Value] => NO )
stdClass Object ( [Variable_name] => have_rtree_keys [Value] => YES )
stdClass Object ( [Variable_name] => have_symlink [Value] => YES )
stdClass Object ( [Variable_name] => init_connect [Value] => )
stdClass Object ( [Variable_name] => init_file [Value] => )
stdClass Object ( [Variable_name] => init_slave [Value] => )
stdClass Object ( [Variable_name] => innodb_additional_mem_pool_size [Value] => 1048576 )
stdClass Object ( [Variable_name] => innodb_autoextend_increment [Value] => 8 )
stdClass Object ( [Variable_name] => innodb_buffer_pool_awe_mem_mb [Value] => 0 )
stdClass Object ( [Variable_name] => innodb_buffer_pool_size [Value] => 8388608 )
stdClass Object ( [Variable_name] => innodb_data_file_path [Value] => )
stdClass Object ( [Variable_name] => innodb_data_home_dir [Value] => )
stdClass Object ( [Variable_name] => innodb_fast_shutdown [Value] => ON )
stdClass Object ( [Variable_name] => innodb_file_io_threads [Value] => 4 )
stdClass Object ( [Variable_name] => innodb_file_per_table [Value] => OFF )
stdClass Object ( [Variable_name] => innodb_flush_log_at_trx_commit [Value] => 1 )
stdClass Object ( [Variable_name] => innodb_flush_method [Value] => )
stdClass Object ( [Variable_name] => innodb_force_recovery [Value] => 0 )
stdClass Object ( [Variable_name] => innodb_lock_wait_timeout [Value] => 50 )
stdClass Object ( [Variable_name] => innodb_locks_unsafe_for_binlog [Value] => OFF )
stdClass Object ( [Variable_name] => innodb_log_arch_dir [Value] => )
stdClass Object ( [Variable_name] => innodb_log_archive [Value] => OFF )
stdClass Object ( [Variable_name] => innodb_log_buffer_size [Value] => 1048576 )
stdClass Object ( [Variable_name] => innodb_log_file_size [Value] => 5242880 )
stdClass Object ( [Variable_name] => innodb_log_files_in_group [Value] => 2 )
stdClass Object ( [Variable_name] => innodb_log_group_home_dir [Value] => )
stdClass Object ( [Variable_name] => innodb_max_dirty_pages_pct [Value] => 90 )
stdClass Object ( [Variable_name] => innodb_max_purge_lag [Value] => 0 )
stdClass Object ( [Variable_name] => innodb_mirrored_log_groups [Value] => 1 )
stdClass Object ( [Variable_name] => innodb_open_files [Value] => 300 )
stdClass Object ( [Variable_name] => innodb_table_locks [Value] => ON )
stdClass Object ( [Variable_name] => innodb_thread_concurrency [Value] => 8 )
stdClass Object ( [Variable_name] => interactive_timeout [Value] => 100 )
stdClass Object ( [Variable_name] => join_buffer_size [Value] => 1044480 )
stdClass Object ( [Variable_name] => key_buffer_size [Value] => 16777216 )
stdClass Object ( [Variable_name] => key_cache_age_threshold [Value] => 300 )
stdClass Object ( [Variable_name] => key_cache_block_size [Value] => 1024 )
stdClass Object ( [Variable_name] => key_cache_division_limit [Value] => 100 )
stdClass Object ( [Variable_name] => language [Value] => /usr/share/mysql/english/ )
stdClass Object ( [Variable_name] => large_files_support [Value] => ON )
stdClass Object ( [Variable_name] => license [Value] => GPL )
stdClass Object ( [Variable_name] => local_infile [Value] => ON )
stdClass Object ( [Variable_name] => locked_in_memory [Value] => OFF )
stdClass Object ( [Variable_name] => log [Value] => OFF )
stdClass Object ( [Variable_name] => log_bin [Value] => OFF )
stdClass Object ( [Variable_name] => log_error [Value] => )
stdClass Object ( [Variable_name] => log_slave_updates [Value] => OFF )
stdClass Object ( [Variable_name] => log_slow_queries [Value] => OFF )
stdClass Object ( [Variable_name] => log_update [Value] => OFF )
stdClass Object ( [Variable_name] => log_warnings [Value] => 1 )
stdClass Object ( [Variable_name] => long_query_time [Value] => 10 )
stdClass Object ( [Variable_name] => low_priority_updates [Value] => OFF )
stdClass Object ( [Variable_name] => lower_case_file_system [Value] => OFF )
stdClass Object ( [Variable_name] => lower_case_table_names [Value] => 0 )
stdClass Object ( [Variable_name] => max_allowed_packet [Value] => 5241856 )
stdClass Object ( [Variable_name] => max_binlog_cache_size [Value] => 4294967295 )
stdClass Object ( [Variable_name] => max_binlog_size [Value] => 1073741824 )
stdClass Object ( [Variable_name] => max_connect_errors [Value] => 10 )
stdClass Object ( [Variable_name] => max_connections [Value] => 500 )
stdClass Object ( [Variable_name] => max_delayed_threads [Value] => 20 )
stdClass Object ( [Variable_name] => max_error_count [Value] => 64 )
stdClass Object ( [Variable_name] => max_heap_table_size [Value] => 16777216 )
stdClass Object ( [Variable_name] => max_insert_delayed_threads [Value] => 20 )
stdClass Object ( [Variable_name] => max_join_size [Value] => 4294967295 )
stdClass Object ( [Variable_name] => max_length_for_sort_data [Value] => 1024 )
stdClass Object ( [Variable_name] => max_relay_log_size [Value] => 0 )
stdClass Object ( [Variable_name] => max_seeks_for_key [Value] => 4294967295 )
stdClass Object ( [Variable_name] => max_sort_length [Value] => 1024 )
stdClass Object ( [Variable_name] => max_tmp_tables [Value] => 32 )
stdClass Object ( [Variable_name] => max_user_connections [Value] => 0 )
stdClass Object ( [Variable_name] => max_write_lock_count [Value] => 4294967295 )
stdClass Object ( [Variable_name] => myisam_data_pointer_size [Value] => 4 )
stdClass Object ( [Variable_name] => myisam_max_extra_sort_file_size [Value] => 2147483648 )
stdClass Object ( [Variable_name] => myisam_max_sort_file_size [Value] => 2147483647 )
stdClass Object ( [Variable_name] => myisam_recover_options [Value] => OFF )
stdClass Object ( [Variable_name] => myisam_repair_threads [Value] => 1 )
stdClass Object ( [Variable_name] => myisam_sort_buffer_size [Value] => 67108864 )
stdClass Object ( [Variable_name] => myisam_stats_method [Value] => nulls_unequal )
stdClass Object ( [Variable_name] => net_buffer_length [Value] => 16384 )
stdClass Object ( [Variable_name] => net_read_timeout [Value] => 30 )
stdClass Object ( [Variable_name] => net_retry_count [Value] => 10 )
stdClass Object ( [Variable_name] => net_write_timeout [Value] => 60 )
stdClass Object ( [Variable_name] => new [Value] => OFF )
stdClass Object ( [Variable_name] => old_passwords [Value] => OFF )
stdClass Object ( [Variable_name] => open_files_limit [Value] => 2566 )
stdClass Object ( [Variable_name] => pid_file [Value] => /var/lib/mysql/fast.securenet-server.net.pid )
stdClass Object ( [Variable_name] => port [Value] => 3306 )
stdClass Object ( [Variable_name] => preload_buffer_size [Value] => 32768 )
stdClass Object ( [Variable_name] => protocol_version [Value] => 10 )
stdClass Object ( [Variable_name] => query_alloc_block_size [Value] => 8192 )
stdClass Object ( [Variable_name] => query_cache_limit [Value] => 1048576 )
stdClass Object ( [Variable_name] => query_cache_min_res_unit [Value] => 4096 )
stdClass Object ( [Variable_name] => query_cache_size [Value] => 33554432 )
stdClass Object ( [Variable_name] => query_cache_type [Value] => ON )
stdClass Object ( [Variable_name] => query_cache_wlock_invalidate [Value] => OFF )
stdClass Object ( [Variable_name] => query_prealloc_size [Value] => 8192 )
stdClass Object ( [Variable_name] => range_alloc_block_size [Value] => 2048 )
stdClass Object ( [Variable_name] => read_buffer_size [Value] => 1044480 )
stdClass Object ( [Variable_name] => read_only [Value] => OFF )
stdClass Object ( [Variable_name] => read_rnd_buffer_size [Value] => 262144 )
stdClass Object ( [Variable_name] => relay_log_purge [Value] => ON )
stdClass Object ( [Variable_name] => relay_log_space_limit [Value] => 0 )
stdClass Object ( [Variable_name] => rpl_recovery_rank [Value] => 0 )
stdClass Object ( [Variable_name] => secure_auth [Value] => OFF )
stdClass Object ( [Variable_name] => server_id [Value] => 0 )
stdClass Object ( [Variable_name] => skip_external_locking [Value] => ON )
stdClass Object ( [Variable_name] => skip_networking [Value] => OFF )
stdClass Object ( [Variable_name] => skip_show_database [Value] => OFF )
stdClass Object ( [Variable_name] => slave_net_timeout [Value] => 3600 )
stdClass Object ( [Variable_name] => slave_transaction_retries [Value] => 0 )
stdClass Object ( [Variable_name] => slow_launch_time [Value] => 2 )
stdClass Object ( [Variable_name] => socket [Value] => /var/lib/mysql/mysql.sock )
stdClass Object ( [Variable_name] => sort_buffer_size [Value] => 2097144 )
stdClass Object ( [Variable_name] => sql_mode [Value] => )
stdClass Object ( [Variable_name] => sql_notes [Value] => OFF )
stdClass Object ( [Variable_name] => sql_warnings [Value] => OFF )
stdClass Object ( [Variable_name] => storage_engine [Value] => MyISAM )
stdClass Object ( [Variable_name] => sync_binlog [Value] => 0 )
stdClass Object ( [Variable_name] => sync_frm [Value] => ON )
stdClass Object ( [Variable_name] => sync_replication [Value] => 0 )
stdClass Object ( [Variable_name] => sync_replication_slave_id [Value] => 0 )
stdClass Object ( [Variable_name] => sync_replication_timeout [Value] => 0 )
stdClass Object ( [Variable_name] => system_time_zone [Value] => EDT )
stdClass Object ( [Variable_name] => table_cache [Value] => 1028 )
stdClass Object ( [Variable_name] => table_type [Value] => MyISAM )
stdClass Object ( [Variable_name] => thread_cache_size [Value] => 128 )
stdClass Object ( [Variable_name] => thread_stack [Value] => 126976 )
stdClass Object ( [Variable_name] => time_format [Value] => %H:%i:%s )
stdClass Object ( [Variable_name] => time_zone [Value] => SYSTEM )
stdClass Object ( [Variable_name] => tmp_table_size [Value] => 33554432 )
stdClass Object ( [Variable_name] => tmpdir [Value] => )
stdClass Object ( [Variable_name] => transaction_alloc_block_size [Value] => 8192 )
stdClass Object ( [Variable_name] => transaction_prealloc_size [Value] => 4096 )
stdClass Object ( [Variable_name] => tx_isolation [Value] => REPEATABLE-READ )
stdClass Object ( [Variable_name] => version [Value] => 4.1.18-standard )
stdClass Object ( [Variable_name] => version_comment [Value] => MySQL Community Edition - Standard (GPL) )
stdClass Object ( [Variable_name] => version_compile_machine [Value] => i686 )
stdClass Object ( [Variable_name] => version_compile_os [Value] => pc-linux-gnu )
stdClass Object ( [Variable_name] => wait_timeout [Value] => 5 )
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33647675
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще прикол

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
class mlDatabase extends database {

	/** @var array list of multi lingual tables */
	var $_mlTableList=null;
 	/** @var Internal variable to hold array of unique tablenames and mapping data*/
	var $_refTables=null; 
  
	
	/** Constructor
	*/
	function mlDatabase( $host='localhost', $user, $pass, $db, $table_prefix='jos_', $driver='' ) {
		$this->database( $host, $user, $pass, $db, $table_prefix, $driver );
		
		mysql_query("set NAMES='cp1251'"); 
        mysql_query("set character_set_client='cp1251'"); 
		mysql_query("set character_set_results='cp1251'"); 
		mysql_query("set collation_connection='cp1251'");
		
		$query = "select distinct reference_table from #__jf_content";
		$this->setQuery( $query );
		$this->_mlTableList = $this->loadResultArray();
		if( !$this->_mlTableList ){
			echo $this->getErrorMsg();
		}
	}

вот так работает нормально, тоесть на экране русский

а вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
	function mlDatabase( $host='localhost', $user, $pass, $db, $table_prefix='jos_', $driver='' ) {
		$this->database( $host, $user, $pass, $db, $table_prefix, $driver );
		
		mysql_query("set NAMES='cp1251'"); 

		
		$query = "select distinct reference_table from #__jf_content";
		$this->setQuery( $query );
		$this->_mlTableList = $this->loadResultArray();
		if( !$this->_mlTableList ){
			echo $this->getErrorMsg();
		}
	}
или вот так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	function mlDatabase( $host='localhost', $user, $pass, $db, $table_prefix='jos_', $driver='' ) {
		$this->database( $host, $user, $pass, $db, $table_prefix, $driver );
		
		$this->setQuery("set NAMES='cp1251'"); 
                 $this->setQuery("set character_set_client='cp1251'"); 
		$this->setQuery("set character_set_results='cp1251'"); 
		$this->setQuery("set collation_connection='cp1251'");
		
		$query = "select distinct reference_table from #__jf_content";
		$this->setQuery( $query );
		$this->_mlTableList = $this->loadResultArray();
		if( !$this->_mlTableList ){
			echo $this->getErrorMsg();
		}
	}

не работает, выдает знаки вопроса, это во фронэнде

ничего не понимаю
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33648119
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторstdClass Object ( [Variable_name] => character_set_connection [Value] => latin1 )
stdClass Object ( [Variable_name] => character_set_database [Value] => latin1 )
stdClass Object ( [Variable_name] => character_set_results [Value] => latin1 )
stdClass Object ( [Variable_name] => character_set_server [Value] => latin1 )
stdClass Object ( [Variable_name] => character_set_system [Value] => utf8 )
stdClass Object ( [Variable_name] => character_sets_dir [Value] => /usr/share/mysql/charsets/ )
stdClass Object ( [Variable_name] => collation_connection [Value] => latin1_swedish_ci )
stdClass Object ( [Variable_name] => collation_database [Value] => latin1_swedish_ci )
stdClass Object ( [Variable_name] => collation_server [Value] => latin1_swedish_ci )
Ну так и смотрите сами - кодировка у вас latin1 вместо cp1251. Какая реальная кодировка у таблицы, в которую рпоисходит вставка? Если это cp1251, то перед вставкой вызывайте
Код: plaintext
SET NAMES cp1251
и только после этого делайте вставку.

Насчет последнего поста.
$this->setQuery - что делает эта функция? Опять же какая кодировка при получении результатов запроса???

Кодировка соединения latin1 обязательна для сервера?
Версия MySQL?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33648161
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MySql v 4.1.18

Таблица куда вставляются данные

CREATE TABLE `jom_jf_content` (
`id` int(10) unsigned NOT NULL auto_increment,
`language_id` int(11) NOT NULL default '0',
`reference_id` int(11) NOT NULL default '0',
`reference_table` varchar(100) NOT NULL default '',
`reference_field` varchar(100) NOT NULL default '',
`value` text NOT NULL,
`original_value` varchar(255) default NULL,
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`modified_by` int(11) unsigned NOT NULL default '0',
`published` tinyint(1) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

тоесть кодировка тут CHARSET=cp1251;



Дело в том что я не понял механизма где вставляется. По идее сохранение произходит вот тут
Joomfish.class.php стр 999
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	function store() {
		$elementTable =& $this->_contentElement->getTable();
		for( $i= 0 ; $i<count($elementTable->Fields); $i++ ) {
			$field =& $elementTable->Fields[$i];
			$fieldContent =& $field->translationContent;
			
			if( $field->Translate ) {
				if( isset($fieldContent->reference_id) ) {
					if ( isset($fieldContent->value) && $fieldContent->value!='' ) {
						$fieldContent->store();
					} else {
						$fieldContent->delete();
					}
				}
			}
		}
	}

Но где сам запрос????
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33648231
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз
1. Кодировка соединения latin1 обязательна для сервера?
2. Версия MySQL?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33648282
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!cЕще раз
1. Кодировка соединения latin1 обязательна для сервера?
2. Версия MySQL?
----------------------------------------
Артисты не приехали, приехали цыгане
Кодировка соединения latin1 обязательна для сервера? - как это узнать?
Версия MySQL? - я же написал вверху в начале прошлого сообщения. 4.1.18
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33648355
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Кодировка соединения latin1 обязательна для сервера? - как это узнать?
Это не узнавать надо, а решать. Если у вас все данные в cp1251, то зачем вам кодировка latin1?
Если cp1251 - это нужная вам кодировка для всгео сервера, то есть смысл настроить сервер СУБД например так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
[client]
...
...
#Кодировка по умолчанию
default-character-set=cp1251
...
...

[server]
...
...
#Кодировка по умолчанию
default-character-set=cp1251
# Параметр заставляет сервер игнорировать кодировку, пришедшую от клиента.
#Т.е. кодировка клиента забывается и устанавливается кодировка сервера.
skip-character-set-client-handshake
...
...
При такой конфигурации вам не нужно будет каждый раз вызывать SET NAMES и думать, что за кодировку просит сервер.

>Версия MySQL? - я же написал вверху в начале прошлого сообщения. 4.1.18
Извинте, не заметил.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33648403
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не знаю, наверное хостер на такое не решится, что-то менять в конфиге, не только я пользую этот сервер.
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33648486
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поборол

всем спасибо.
Отдельное 4m@t!c за терпение
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33648550
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напишите, как побороли?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
    #33648838
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
	function query() {
		global $mosConfig_debug;
		if ($this->_debug) {
			$this->_ticker++;
	  		$this->_log[] = $this->_sql;
		}
		if ($this->_limit >  0  || $this->_offset >  0 ) {
			$this->_sql .= "\nLIMIT $this->_offset, $this->_limit";
		}
		$this->_errorNum =  0 ;
		$this->_errorMsg = '';
		mysql_query("set NAMES='cp1251'"); 
        mysql_query ("set character_set_client='cp1251'"); 
		mysql_query ("set character_set_results='cp1251'"); 
		mysql_query ("set collation_connection='cp1251'");
		$this->_cursor = mysql_query( $this->_sql, $this->_resource );
		if (!$this->_cursor) {
			$this->_errorNum = mysql_errno( $this->_resource );
			$this->_errorMsg = mysql_error( $this->_resource )." SQL=$this->_sql";
			if ($this->_debug) {
				trigger_error( mysql_error( $this->_resource ), E_USER_NOTICE );
				//echo "<pre>" . $this->_sql . "</pre>\n";
				if (function_exists( 'debug_backtrace' )) {
					foreach( debug_backtrace() as $back) {
						if (@$back['file']) {
							echo '<br />'.$back['file'].':'.$back['line'];
						}
					}
				}
			}
			return false;
		}
		return $this->_cursor;
	}
это метод в классе работы с БД, на него я так понял все ссылается, явно или как либо по другому.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP+MySQL) Joomla + Jomfish + кодировка (может кто пользовался)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]