Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Титлы для модулей


Автор: PARROT 13.7.2006, 09:47
Вот, есть у меня разные файлы, каждый из которых отвечают за ту или иную тему (движок).
Код

mod1 - модуль по умолчанию, с него грузится сайт
mod2 - этот отвечает за технику
mod3 - отвечает за поиск по сайту
mod4 - отвечает за каталог ссылок, вывод

Вопрос: Как сделать так, чтобы титлы у этих файлов были разными? по номеру
Инфа берется из базы. Понимаю, что нужно проверять какой именно вызван сейчас модуль если такой, то берем из соответствующей таблицы титлы.

Я просто незнаю откуда начать копать и в какую сторону. Сама не пробовала, незнаю почему. Хотелось бы пример и маленькую подсказку. Титлы сейчас работают только для mod2
http://www.abmi.ru
Если зайти в каталог то...

Спасибо всем, кто подтолкнет меня к истине.  smile    

Автор: GiV 13.7.2006, 10:27
Здраствуйте.

Ход рассуждений у Вас правильный. В начале каждого модуля давайте напишем 
Код

define('MOD', 'id_модуля');


Когда подключается модуль константа MOD будет иметь значение идентификатора модуля (mod1, mod2, mod3, mod4).

Далее просто делается запрос
Код

SELECT title FROM mod_titles WHERE mod_id='" . MOD ."'


Собственно значение которое нам вернули мы и подставляем в тэг <title></title> 

Автор: PARROT 13.7.2006, 11:19
Да, но только титлы находятся выше подключаемого модуля, поэтому переменная MOD не ловится, она пуста и ничего не печатает.  smile

Добавлено @ 11:25 
title.php
Код

<?php
if (!isset($_GET['id'])) $_GET['id']=1;
$out = mysql_query("SELECT id,tit,kluch,descr FROM title WHERE id='" . MOD ."'") or die(mysql_error());
if (@mysql_num_rows($out) == 1) {
        $resl_arr=mysql_fetch_row($out);
        $titl=$resl_arr[1];
        $keys=$resl_arr[2];
        $desk=$resl_arr[3];

}
?>

index.php
Код

<?php
//подключаемся к базе
include("include/config.php");
include ("include/title.php"); подключаем титлы
if (!isset($mod) || ($mod=="") || (!file_exists ("mods/$mod.php"))) {
$mod=$sys_def_mod;//модуль по умолчанию 1
}
?>
<html>
<head>
<base href='http://abmi/'>
<Meta http-equiv='content-type' Content='text/html; charset=Windows-1251'>
<Meta name="Keywords" Content="<? echo $keys; ?>">
<Meta name="Description" Content="<? echo $desk; ?>">
<Meta name="Author" Content="Majorova Nataliya">
<Meta name="Reply-to" Content="1538733@traktora.spb.ru">
<Meta Name="Date" Content="May 11 2006 18:00 Am">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<title><? echo $titl;?></title>
<link rel="stylesheet" href="include/styles.css" type="text/css">
</head>

<body bgcolor="#DEDEDD" topmargin='0' leftmargin='0' bottommargin='0'  rightmargin='0'>
<?
include("include/top.php");
include("mods/$mod.php");//подключаемый модуль
include("include/bottom.php");
?>
</body>
</html>
 

Автор: GiV 13.7.2006, 11:50
Поставьте 4-ю строчку index.php после 5-ой. 

Автор: PARROT 13.7.2006, 12:00
GiV, не помогает  smile , история таже, титлы пусты. 
Наверху каждого модуля:
Код

define('MOD', '1'); 

index.php
Код

include("include/config.php");

if (!isset($mod) || ($mod=="") || (!file_exists ("mods/$mod.php"))) {
$mod=$sys_def_mod;
}
include ("include/title.php"); титлы
?>
<html>
 

Автор: GiV 13.7.2006, 12:11
А если include/title.php будет таким?

Код

<?php
if (!isset($_GET['id'])) $_GET['id']=1;
$out = mysql_query("SELECT id,tit,kluch,descr FROM title WHERE id='" . $mod ."'") or die(mysql_error());
if (@mysql_num_rows($out) == 1) {
        $resl_arr=mysql_fetch_row($out);
        $titl=$resl_arr[1];
        $keys=$resl_arr[2];
        $desk=$resl_arr[3];
}
?>


 

Автор: PARROT 13.7.2006, 12:18
Та же Петрушка.
Ничего не печатает.
Код

<Meta name="Keywords" Content="">
<Meta name="Description" Content="">
<Meta name="Author" Content="Majorova Nataliya">
<Meta name="Reply-to" Content="1538733@traktora.spb.ru">
<Meta Name="Date" Content="May 11 2006 18:00 Am">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<title></title>
 

Автор: GiV 13.7.2006, 12:23
А должно =)

index.php
Код

include("include/config.php");
if (!isset($mod) || ($mod=="") || (!file_exists ("mods/$mod.php"))) {
$mod=$sys_def_mod;
}
include ("include/title.php"); титлы
?>
<html>


title.php
Код

<?php
if (!isset($_GET['id'])) $_GET['id']=1;

echo "SELECT id,tit,kluch,descr FROM title WHERE id='" . $mod ."'";

$out = mysql_query("SELECT id,tit,kluch,descr FROM title WHERE id='" . $mod ."'") or die(mysql_error());
if (@mysql_num_rows($out) == 1) {
        $resl_arr=mysql_fetch_row($out);
        $titl=$resl_arr[1];
        $keys=$resl_arr[2];
        $desk=$resl_arr[3];
}
?>


Что выводит? 

Автор: PARROT 13.7.2006, 12:34
Код

SELECT id,tit,kluch,descr FROM title WHERE id='mod2' 


Добавлено @ 12:34 
В принципе печатает правильно, модуль 2 

Автор: GiV 13.7.2006, 12:39
Теперь можете привести содержимое таблицы title ? 

Автор: PARROT 13.7.2006, 12:43
но в титлах ничего не печатает.

Добавлено @ 12:45 
Код

INSERT INTO `title` VALUES (1, 'АБМ Индустрия', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, Бульдозеры, Эскаваторы.', 'О компании, Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, Бульдозеры, Эскаваторы.');
INSERT INTO `title` VALUES (2, 'Фронтальные погрузчики ZL 30-II, ZL50F', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики,ZL 30-II, ZL50F, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, Бульдозеры, Эскаваторы.', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики, ZL 30-II, ZL50F, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, Бульдозеры, Эскаваторы.');
INSERT INTO `title` VALUES (3, 'Вилочные автопогрузчики 3-7 тонн DFH', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики,3-7 тонн DFH, Грузоподьемность, Подъем, Дорожные катки, Эскаваторы, Бульдозеры, Эскаваторы.', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики, 3-7 тонн DFH, Грузоподъемность, Подъем, Дорожные катки, Эскаваторы, Бульдозеры, Эскаваторы.');
INSERT INTO `title` VALUES (4, 'Дорожные катки LSD212H, LSD226H', 'Китайская спецтехника,Доставка, Контакты, Модели спецмашин, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, LSD212H, LSD226H, Эскаваторы, Бульдозеры, Эскаваторы.', 'Китайская спецтехника,Доставка, Контакты, Модели спецмашин, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, LSD212H, LSD226H, Эскаваторы, Бульдозеры, Эскаваторы.');
INSERT INTO `title` VALUES (5, 'Эскаваторы WY10/WY10R, WY4.0-6', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, WY10/WY10R, WY4.0-6, Модели спецмашин, Бульдозеры, Эскаваторы.', 'Китайская спецтехника,Доставка, Контакты, Модели спецмашин, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, WY10/WY10R, WY4.0-6, Бульдозеры, Эскаваторы.');
INSERT INTO `title` VALUES (6, 'Бульдозеры гусеничныеT80/TG80, T120A/T120G', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, Бульдозеры гусеничные, T80/TG80,T120A/T120G, T100B/TS100, T90/T100, TY165/T140, T100G/T100G-II,\r\nЭскаваторы, Асфальтоукладчики.', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, Бульдозеры гусеничные, T80/TG80,T120A/T120G, T100B/TS100, T90/T100, TY165/T140, T100G/T100G-II,\r\nЭскаваторы, Асфальтоукладчики.');
INSERT INTO `title` VALUES (7, 'Асфальтоукладчики HP75/HP95, SP75/SP125', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, Бульдозеры, Эскаваторы, Асфальтоукладчики, HP75/HP95, SP75/SP125.', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, Бульдозеры, Эскаваторы,Асфальтоукладчики, HP75/HP95, SP75/SP125.');
INSERT INTO `title` VALUES (8, 'Контакты', 'Китайская спецтехника,Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, Бульдозеры, Эскаваторы.', 'О компании, Доставка, Контакты, Фронтальные Погрузчики, Вилочные Автопогрузчики, Дорожные катки, Эскаваторы, Бульдозеры, Эскаваторы, Прайс-лист, Россия, Санкт-Петербург, Химический переулок.');
 
 

Автор: GiV 13.7.2006, 13:10
Угу. Стоит добавить еще один аттрибут в таблицу titles
Код

ALTER TABLE title ADD module VARCHAR(10);


В этом аттрибуте будут в каждой записи модули к которым title принадлежит.

Например 'Фронтальные погрузчики ZL 30-II, ZL50F' принадлежат модулю mod2

Запрос $out = mysql_query("SELECT id,tit,kluch,descr FROM title WHERE module ='" . $mod ."'") or die(mysql_error()); будет выдавать тайтл для модуля, но есть одно но! Я так понял id это аттрибут со свойством auto_increment? 

Автор: PARROT 13.7.2006, 13:27
Цитата(GiV @  13.7.2006,  14:10 Найти цитируемый пост)
Я так понял id это аттрибут со свойством auto_increment?  

Нет.
Код

CREATE TABLE `title` (
  `id` int(11) NOT NULL default '0',
  `tit` varchar(60) NOT NULL default '',
  `kluch` text NOT NULL,
  `descr` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


Добавлено @ 13:36 
В базу добавила поле module+изменила title.php , но пока никаких изменений нет. Не печатает ничего.

Добавлено @ 13:39 
Код

$out = mysql_query("SELECT id,tit,kluch,descr FROM title WHERE module ='" . $mod ."' AND id=".$_GET['id']."") or die(mysql_error());

Все! Спасибо! Заработало! УРА!!! 
Спасибо, GiV !  smile

Добавлено @ 13:41 
Правда, да. Наверно стоит добавить еще одно поле, потому что у всех модулей есть как 1 так и двойка и т.д. и по нему выводить  smile , да? 

Автор: GiV 13.7.2006, 15:45
Цитата(PARROT @  13.7.2006,  13:27 Найти цитируемый пост)
Правда, да. Наверно стоит добавить еще одно поле, потому что у всех модулей есть как 1 так и двойка и т.д. и по нему выводить  smile , да? 

Я именно по этому и спрашивал про поле id и его свойство auto_increment =) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)