|
|
|
| Здравствуйте!
Решил соединить ваш сайт с книжки и ваш форум с сайта LiteForum 2.1.4.
Но возникла одна проблемка, которую не знаю как элегантнее решить
Форум и сайт две разные базы данных. Когда я захожу на сайт срабатывает config сайта
В котором есть функция puterror, когда я захожу на форум загружается config форума, в котором уже есть эта функция(ошибка повторного объявления функции), но это пол беды, когда затем я возвращаюсь на сайт
Config сайта не перезагружается и остается открытой БД форума, т.к.
require_once("../admin/config.php");
| =>
выход из этой ситуации вынос замена везде require_once на include и вынос функций в отдельный файл func.php и require_once функции или есть способ как без инклюдов? | |
|
|
|
|
|
|
|
для: prostonau
(03.06.2005 в 16:02)
| | Хм... вы можете объединить таблицы обеих баз данных в одну... | |
|
|
|
|
|
|
|
для: cheops
(03.06.2005 в 19:25)
| | а если я захочу добавить еще один форум ? | |
|
|
|
|
|
|
|
для: prostonau
(04.06.2005 в 00:58)
| | А как у вас форум включается в сайт? Он на отдельной странице или включается в таблицу сайта? | |
|
|
|
|
|
|
|
для: cheops
(04.06.2005 в 12:29)
| | На сайте авторизация (для добовления комментов к статьям) использующая таблицу форума. | |
|
|
|
|
|
|
|
для: prostonau
(04.06.2005 в 13:14)
| | Можно открыть два соединения с базой данных для разных баз и в операторах mysql_* явно указать дескрипторы соединения - если у вас возникнут с этим затруднения, можете прикрепить эту страницу - мы поможем вам её отладить. | |
|
|
|
|
|
|
|
для: cheops
(04.06.2005 в 13:51)
| | Разве можно открыть две базы одновременно??
А если в них таблицы с одинаковыми названиями, наверно я что-то не понимаю.
Ведь в SQL запросе нет никакой ссылки на базу данных, а работается по умолчанию с открытой. Если я не прав, то можете показать простенький примерчик как открываются две базы данных и делаются два любых (формальных) запроса, каждый из своей базы plz.
вот конфиг сайта
<?php
// if ($dbcnx) mysql_close();
$dblocation = "localhost";
$dbname = "opensystem";
$dbuser = "root";
$dbpasswd = "";
// Устанавливаем соединение с базой данных
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
....
if (!$dbcnx)
{
echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
exit();
}
if (! @mysql_select_db($dbname,$dbcnx) )
{
echo( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
exit();
}
// Небольшая вспомогательная функция, которая выводит сообщение об ошибке
// в случае ошибки запроса к базе данных
// function puterror($message)
// {
// echo("<p>$message</p>");
// exit();
// }
?>
|
вот конфиг форума
]
<?php
$dblocation = "localhost";
$dbname = "openforum";
$dbuser = "root";
$dbpasswd = "";
// Данная переменная определяет путь к "шкуре" форума
$skin = "../skins/base/";
// Устанавливаем соединение с сервером базы данных
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
puterror("В настоящий момент сервер базы данных не доступен,
поэтому корректное отображение страницы невозможно.");
}
// Выбираем базу данных
if (!@mysql_select_db($dbname,$dbcnx))
{
puterror("В настоящий момент база данных не доступна, поэтому
корректное отображение страницы невозможно.");
}
// Небольшая вспомогательная функция, которая выводит сообщение об ошибке
// в случае ошибки запроса к базе данных
// function puterror($message)
// {
// echo("<center><p>$message</p>");
// echo "<p><b>Error: ".mysql_error()."</b><p></center>";
// exit();
//}
?>
|
вот файл с функцией Puterror, которую я отдельно подключаю
<?php
// Небольшая вспомогательная функция, которая выводит сообщение об ошибке
// в случае ошибки запроса к базе данных
function puterror($message)
{
echo("<p>$message</p>");
exit();
}
?>
|
| |
|
|
|
|
|
|
|
для: prostonau
(04.06.2005 в 16:13)
| | >Разве можно открыть две базы одновременно??
Да. Вам следует переименовать в одном из конфигов дескриптор $dbcnx (например в $link), а в Web-приложении (лучше не в форуме) указывать со всеми функциями это дескриптом, например
<?php
// Запрос к первой базе данных
$query = "Запрос";
$tbl = mysql_query ($query, $dbcnx);
// Запрос ко второй базе данных
$query = "Запрос";
$brb = mysql_query ($query, $link);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(04.06.2005 в 19:12)
| | Спасибо за пример, но так как движок сайта ваш, то к каждому запросу приписывать индификатор бд - это накладно, если с самого начала то можно, в итоге я загружаю конфиг форума на в top.php , провожу там авторизацию, и загружаю конфиг сайта. Все работает, но если я на одной странице сделаю три инклуда
1. конфиг форума
2.конфиг сайта
3. опять конфиг форума
то переход от 2 к 3 пункту не происходит WHY?
Это я хотел сделать возможным изменять визитку и на сайте, кроме форума, но пришлось пока оставить только на форуме эту возможность.
И еще вопроси, я посидел поломал голову почему у меня Куки не работают на сайте, а на форуме работают, оказалось в функции из utils.php -> setallcooke() при помощи переменной path делает область видимости Куки только в форуме, зачем этот наворот?
Я поставил и все заработало. Теперь можно добавлять комменты к статьям =)
И еще вопрос на упреждение. Как я понимаю если я добавлю еще один ваш форум с новой БД, то появится еще одна таблица авторов, как проще сделать ее общей. | |
|
|
|
|
|
|
|
для: prostonau
(06.06.2005 в 13:31)
| | Попробуйте перед каждым из конфигурационных файлов поставить mysql_close()
1. конфиг форума
// Код
mysql_close
2.конфиг сайта
// Код
mysql_close
3. опять конфиг форума | |
|
|
|