







|
MySQL.RU - Webboard
Вернуться
Мультиязычность для фотогалереи (Андрей) 12/01/2009 - 19:50:51
From: Андрей - 12/01/2009 - 19:50:51
Subject:Мультиязычность для фотогалереи
-----------------
Заранее хочу попросить прощения если подобный вопрос уже задавался здесь, просто перечитать 300+ страниц неосилил (
Вопрос в следующем:
Есть таблица с изображениями (photogalery_photos) и таблица с описаниями изображений(photogalery_photos_texts), изображения с описаниями связываются через таблицу (photogalery_photos_rel) с ключем языка.
CREATE TABLE `languages` (
`id` tinyint(4) NOT NULL auto_increment,
`short` char(3) NOT NULL default '',
`name` varchar(128) NOT NULL default '',
`image` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;
INSERT INTO `languages` VALUES (1, 'eng', 'English', '');
INSERT INTO `languages` VALUES (2, 'рус', 'Русский', '');
CREATE TABLE `photogalery_photos` (
`id` int(11) NOT NULL auto_increment,
`photo_position` int(11) NOT NULL default '0',
`photogalery_section_id` int(11) NOT NULL default '0',
`file_name` varchar(255) NOT NULL default '',
`status` tinyint(4) NOT NULL default '0',
`user_id` int(11) NOT NULL default '0',
`timestamp` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
CREATE TABLE `photogalery_photos_rel` (
`id` int(11) NOT NULL auto_increment,
`photogalery_photos_id` int(11) NOT NULL default '0',
`photogalery_photos_text_id` int(11) NOT NULL default '0',
`language` smallint(6) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `photogalery_photos_id` (`photogalery_photos_id`),
KEY `photogalery_photos_text_id` (`photogalery_photos_text_id`),
KEY `language` (`language`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
CREATE TABLE `photogalery_photos_texts` (
`id` int(11) NOT NULL auto_increment,
`header` varchar(255) NOT NULL default '',
`text` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
Запрос выглядит примерно так:
$query = " SELECT photogalery_photos.id id,
photogalery_photos.file_name file_name,
photogalery_photos_texts.header header,
FROM photogalery_photos
LEFT OUTER JOIN photogalery_photos_rel ON photogalery_photos.id = photogalery_photos_rel.photogalery_photos_id
AND photogalery_photos_rel.language = ".$language."
LEFT OUTER JOIN photogalery_photos_texts ON photogalery_photos_rel.photogalery_photos_text_id = photogalery_photos_texts.id
WHERE photogalery_photos.photogalery_section_id = ".$section." LIMIT ".(($page-1)*$photos_on_page).", ".($photos_on_page);
Проблема заключается в том, чтобы перезаписать запрос так чтобы в сэлэкте количество photogalery_photos_texts.header header увеличивалось в зависимости от количества языков и соответственно значения хидеров соответствовали значениям для нужного языка о_О
id filename header1 header2
1 f_name1 h1_rus h2_eng
2 f_name2 h3_rus h4_eng
3 f_name3 null h6_eng
Юзаю MySQL 4.1.16-max
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
34844
|
|