Сделал я новый блок, у который инклюдлится пхп-шный фалик, который в свою очередь выводит последние посты с форума (VB) на морду. Сделал так:
<?php
ob_start();
include("../threads.php");
$out1 = ob_get_contents();
ob_end_clean();
echo iconv("WINDOWS-1251", "UTF-8", $out1);
?>
Нажал на "Сохранить" и увидел на морде админки такое... что ни словом сказать ни пером описать. А именно вот:
user warning: Table 'locales_source' doesn't exist query: SELECT s.lid, t.translation FROM locales_source s INNER JOIN locales_target t ON s.lid = t.lid WHERE s.source = '\nBlocks are boxes of content that may be rendered into certain regions of your web pages, for example, into sidebars. They are usually generated automatically by modules, but administrators can create blocks manually.\nOnly enabled blocks are shown. You can position blocks by specifying which area of the page they should appear in (e.g., a sidebar). Highlighted labels on this page show the regions into which blocks can be rendered. You can specify where within a region a block will appear by adjusting its weight.\nIf you want certain blocks to disable themselves temporarily during high server loads, check the \'Throttle\' box. You can configure the auto-throttle on the throttle configuration page after having enabled the throttle module.\nYou can configure the behaviour of each block (for example, specifying on which pages and for what users it will appear) by clicking the \'configure\' link for each block.\n' AND t.locale = 'ru' in /bhome/part3/02/www/drupal/includes/database.mysql.inc on line 120.
И еще строк пятнадцать такого же примерно содержания.
После всего этого имею только один вопрос: ЧТО ЭТО БЫЛО?
Комментарии
запрос проверь ага
дык чего это поверять то? выключаю блок с пхпшкой внутри - все ок.
нормана все с запросом, ага.
Чего-то я не понял:
Это к чему отностится? К какому коду? Который внутри
threads.php
?еще раз, есть блок. в нем есть php-код. в котором есть инклюд threads.php.
как только я включаю весь этот блок в друпале - вылезает ошибка. как только выключаю - все ок.
В таком случае, я не понимаю Ваш ответ на предложение lalex-а проверить корректность запроса к БД Из чего вы заключили, что запрос "нормальный"? Из того, что отключив блок, не получили никакой ошибки?
Ошибки с текстами запросов относятся к переводам (как видно из первого поста). При отключении блока с инклюдом переводы благополучно забираются этими же запросами из базы без ошибок и выводятся в соотвествующих местах, из чего я делаю вывод, что с запросами все в порядке. Логично вроде. Нет?
Что характерно - с самими переводами никаких проблем тоже нет, сначала выводятся соотвествующие результаты из запроса, а потом эти варнинги (как бы повторно).
Отсюда как бы следующий вывод следует: мой инклюд или его содержимое мешает нормальной работе друпала с базой, но что особенно странно - не влияет на результаты этой работы (кроме множества варнингов)
Понятно. Мы с Вами о разных запросах разговор ведём. И я имел ввиду именно то, что Вы говорите ниже:
Именно это... Сорри, если не понятно выражался.
И ещё - я сразу не заметил, какая версия Дрюпала у Вас. К сожалению с CVS-ной помочь не смогу -нет её под рукой. Если баг проявляется и в 4.7.3, то можем продолжить обсуждение. В этом случае покажите Ваш
threads.php
.Знаете ... Мы вам не можем ничем помочь. Дело в том, что телепаты внезапно собрались и уехали в отпуск. Сказали работа нервная, устали...
.
В общем, когда они вернуться и мы узнаем код threads.php, тогда что-нибдь вам ответим...
несколько отошел от темы, но вновь натолкнулся на нее же.
в общем такие ошибки возникают, когда в подключаемом iclude файла имеются две конструкции:
mysql_connect
и
mysql_select_db
т.е. данные для инклюда берутся из базы нормально, а вот друпаловское окурежение (переводы, стили и т.д) - как бы уже до базы достучаться не может.
отчего такая фигня?
function my_new_db_func(/*..*/) {
db_set_active('my_new_connection');
//
// .. идёт работа с другим коннекшном к БД
//
db_set_active();
// устанавливаем коннекшн "по-умолчанию"
// для остальных частей Дрюпала
}
?>
Этот вариант подойдёт Вам, в случае, если нужен отдельный коннект к той же БД. Если же требуется обращение к другой БД, то надо будет подумать... Там придётся танцевать вокруг
$db_url
.когда ты делаешь свой
mysql_connect
и mysql_select_db
все старые
mysql_connect
и mysql_select_db
закрываются
Всем спасибо, разобрался. Уже открытый коннект не подходит, потому что данные друпала и подключаемого модуля лежат в РАЗНЫХ базах.
А как Вы решили проблему с подключением к разным БД?
Рассказываю:
sites/default/settings.php:
Database URL format:
$db_url['default'] = 'mysql://iser:pass@mysql.baze/base-name';
$db_url['base2'] = 'mysql://user:pass@mysql.baze/base-name2';
$db_prefix = '';
Потом с скрипте:
db_set_active('base2');
...
db_set_active('default');
Надеюсь логика ясна.
Чуваку, который про телепатов говорил - превед! Большой.
Ёлки-палки... я до такой простой вещи не додумался - всё - пора на покой