|
|
|
| Хотелось бы реализовать следующую вещь.
На странице находятся различные блоки (блок новостей, блок опроса, и т.д.).
Но что бы не редактировать постоянно расположение блоков, решил сделать следующим образом:
создал таблицу со страницами
CREATE TABLE `Pages` (
`n_page` smallint(6) NOT NULL auto_increment,
`NamePage` varchar(50) NOT NULL default '',
PRIMARY KEY (`n_page`),
UNIQUE KEY `NamePage` (`NamePage`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=19 ;
|
создал еще две таблицы
CREATE TABLE `manager` (
`id_punkt` smallint(6) NOT NULL auto_increment,
`name_punkt` varchar(20) NOT NULL default '',
`punkt_put` varchar(30) NOT NULL default '',
PRIMARY KEY (`id_punkt`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=8 ;
|
в которой
`name_punkt` — имя которое бдет отображаться в заголовке блока
`punkt_put` — путь откуда нужно будет инклудить файл
и
CREATE TABLE `content` (
`id_cont` smallint(5) unsigned NOT NULL auto_increment,
`id_pages` smallint(5) unsigned default NULL,
`id_punkt` smallint(5) unsigned default NULL,
`position` enum('L','R','C') default NULL,
`show` enum('Y','N') default NULL,
UNIQUE KEY `id_cont` (`id_cont`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=18 ;
|
где `id_pages` — номер страницы (т.е. Pages.n_page=content.id_pages)
`id_punkt` — номер блока (т.е. manager.id_punkt=content.id_punkt)
`position` — расположение на странице (слево, справо, по центру)
`show` — отображать или нет
затем результат запроса помещаю в массив
$querycontent=«SElECT manager.punkt_put,manager.name_punkt, content.position FROM content,pages,manager where pages.NamePage='».$_SERVER['PHP_SELF'].«' and pages.n_page=content.id_pages and content.id_punkt=manager.id_punkt and content.show='Y'»;
$q_content=mysql_query($querycontent) or die(mysql_error());
while ($rower=mysql_fetch_array($q_content)) {
SWITCH ($rower['position']){
case 'R':
$rigthcontent[$rower['name_punkt']]=$rower['punkt_put'];
break;
case 'C':
$centercontent[$rower['name_punkt']]=$rower['punkt_put'];
break;
case 'L':
$leftcontent[$rower['name_punkt']]=$rower['punkt_put'];
break;
}}
|
создал класс для вывода(где $rus_name название блока т.е. manager.name_punkt; и $loads путь к файлу, т.е. manager.punkt_put)
class manager_content{
FUNCTION load_content($rus_name,$loads){
echo «<TR>\n<TD vAlign=\»top\«>.$rus_name.</TD></TR>
<TR><TD vAlign=\»top\« class=\»tn\«>»;include($loads);
echo «</td></tr>»;
echo «<TR><TD ><IMG height=\»4\« src=\»image/spacer.gif\« width=\»100%\«></TD></TR>»;
}}
|
и соответственно вывод уже на страницу
foreach($leftcontent as $k=>$v){
$content->load_content($k,$v);
}
|
вопрос: не будет ли сие тормозить?
какие могут быть другие варианты решения?
----
Regards, Max Vasin. | |
|
|