Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сайт+форум
 
 автор: prostonau   (03.06.2005 в 16:02)   письмо автору
 
 

Здравствуйте!

Решил соединить ваш сайт с книжки и ваш форум с сайта LiteForum 2.1.4.
Но возникла одна проблемка, которую не знаю как элегантнее решить

Форум и сайт две разные базы данных. Когда я захожу на сайт срабатывает config сайта
В котором есть функция puterror, когда я захожу на форум загружается config форума, в котором уже есть эта функция(ошибка повторного объявления функции), но это пол беды, когда затем я возвращаюсь на сайт
Config сайта не перезагружается и остается открытой БД форума, т.к.
  require_once("../admin/config.php");
=>
выход из этой ситуации вынос замена везде require_once на include и вынос функций в отдельный файл func.php и require_once функции или есть способ как без инклюдов?

   
 
 автор: cheops   (03.06.2005 в 19:25)   письмо автору
 
   для: prostonau   (03.06.2005 в 16:02)
 

Хм... вы можете объединить таблицы обеих баз данных в одну...

   
 
 автор: prostonau   (04.06.2005 в 00:58)   письмо автору
 
   для: cheops   (03.06.2005 в 19:25)
 

а если я захочу добавить еще один форум ?

   
 
 автор: cheops   (04.06.2005 в 12:29)   письмо автору
 
   для: prostonau   (04.06.2005 в 00:58)
 

А как у вас форум включается в сайт? Он на отдельной странице или включается в таблицу сайта?

   
 
 автор: prostonau   (04.06.2005 в 13:14)   письмо автору
 
   для: cheops   (04.06.2005 в 12:29)
 

На сайте авторизация (для добовления комментов к статьям) использующая таблицу форума.

   
 
 автор: cheops   (04.06.2005 в 13:51)   письмо автору
 
   для: prostonau   (04.06.2005 в 13:14)
 

Можно открыть два соединения с базой данных для разных баз и в операторах mysql_* явно указать дескрипторы соединения - если у вас возникнут с этим затруднения, можете прикрепить эту страницу - мы поможем вам её отладить.

   
 
 автор: prostonau   (04.06.2005 в 16:13)   письмо автору
 
   для: 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();
    }
  
?>

   
 
 автор: cheops   (04.06.2005 в 19:12)   письмо автору
 
   для: prostonau   (04.06.2005 в 16:13)
 

>Разве можно открыть две базы одновременно??
Да. Вам следует переименовать в одном из конфигов дескриптор $dbcnx (например в $link), а в Web-приложении (лучше не в форуме) указывать со всеми функциями это дескриптом, например
<?php
  
// Запрос к первой базе данных
  
$query "Запрос";
  
$tbl mysql_query ($query$dbcnx);
  
// Запрос ко второй базе данных
  
$query "Запрос";
  
$brb mysql_query ($query$link);
?>

   
 
 автор: prostonau   (06.06.2005 в 13:31)   письмо автору
 
   для: cheops   (04.06.2005 в 19:12)
 

Спасибо за пример, но так как движок сайта ваш, то к каждому запросу приписывать индификатор бд - это накладно, если с самого начала то можно, в итоге я загружаю конфиг форума на в top.php , провожу там авторизацию, и загружаю конфиг сайта. Все работает, но если я на одной странице сделаю три инклуда
1. конфиг форума
2.конфиг сайта
3. опять конфиг форума
то переход от 2 к 3 пункту не происходит WHY?
Это я хотел сделать возможным изменять визитку и на сайте, кроме форума, но пришлось пока оставить только на форуме эту возможность.

И еще вопроси, я посидел поломал голову почему у меня Куки не работают на сайте, а на форуме работают, оказалось в функции из utils.php -> setallcooke() при помощи переменной path делает область видимости Куки только в форуме, зачем этот наворот?
Я поставил
$path=”/”;
и все заработало. Теперь можно добавлять комменты к статьям =)

И еще вопрос на упреждение. Как я понимаю если я добавлю еще один ваш форум с новой БД, то появится еще одна таблица авторов, как проще сделать ее общей.

   
 
 автор: cheops   (06.06.2005 в 13:46)   письмо автору
 
   для: prostonau   (06.06.2005 в 13:31)
 

Попробуйте перед каждым из конфигурационных файлов поставить mysql_close()
1. конфиг форума
// Код
mysql_close
2.конфиг сайта
// Код
mysql_close
3. опять конфиг форума

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования