Написание пользовательского скрипта, обращающегося к БД

Створення, модифікація розширень для Joomla!
Правила форуму
Обов'язково вказуйте іконку версії Joomla для свого розширення. Це дозволить користувачам орієнтуватися для якої лінійки Joomla створено розширення та не задавати зайвих запитань!
Vyshkant
Користувач
Користувач
Повідомлень: 1
З нами з: 14 серпня 2012, 18:37

Написание пользовательского скрипта, обращающегося к БД

Повідомлення Vyshkant » 14 серпня 2012, 18:44

Привет, форумчане!
Точно не знаю, как классифицировать мой вопрос, поэтому пишу в эту ветку.
Я решил написать скрипт, который бы с определённой периодичностью запускался cron'ом и который сверял бы дату события (она записана в поле "Дата создания", 'created' в БД) с текущей датой, и если событие прошло, то перемещал бы материал в другую категорию. Т.е. логика такая: сделать выборку строк из базы, в которых 'catid' (Категория) соответствует требуемой и проверить их поля 'created'.
Скрипт, по моим представлениям, должен был лежать в корне и работать
Вот собственно и он:

Код: Виділити все

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
 
define('_JEXEC', 1);
define('JPATH_BASE', dirname(__FILE__));
define('DS', DIRECTORY_SEPARATOR);
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
 
$cat_announce = 42;
$cat_kiev = 38;
$cat_lvov = 40;
$cat_mariupol = 44;
$cat_krasnoarmejsk = 43;
 
$db =& JFactory::getDBO();
echo var_dump(JFactory::getConfig());
 
$query = 'SELECT * FROM `#__content` WHERE `catid` = '.$cat_announce;
$db->setQuery($query);
 
$result = $db->loadAssocList();
 
 
foreach ($result as $row)
{
   $count_to[$number++] = $row['created'];
}
 
$count_from = date("Y-m-d H:i:s");
 
for ($i = 0; $i <= $number; $i++)
{
   $difference[$i] = $count_to[$i] - $count_from;
}
?>
Итого: благодаря строчке

Код: Виділити все

echo var_dump(JFactory::getConfig());
мы узнаём, что

Код: Виділити все

object(JRegistry)#2 (3) { ["_defaultNameSpace"]=> string(6) "config" ["_registry"]=> array(1) { ["config"]=> array(1) { ["data"]=> object(stdClass)#3 (32) { ["dbtype"]=> string(5) "mysql" ["host"]=> string(9) "localhost" ["user"]=> string(0) "" ["password"]=> string(0) "" ["db"]=> string(0) "" ["dbprefix"]=> string(4) "jos_" ["ftp_host"]=> string(9) "127.0.0.1" ["ftp_port"]=> string(2) "21" ["ftp_user"]=> string(0) "" ["ftp_pass"]=> string(0) "" ["ftp_root"]=> string(0) "" ["ftp_enable"]=> int(0) ["tmp_path"]=> string(4) "/tmp" ["log_path"]=> string(9) "/var/logs" ["mailer"]=> string(4) "mail" ["mailfrom"]=> string(20) "admin@localhost.home" ["fromname"]=> string(0) "" ["sendmail"]=> string(18) "/usr/sbin/sendmail" ["smtpauth"]=> string(1) "0" ["smtpsecure"]=> string(4) "none" ["smtpport"]=> string(2) "25" ["smtpuser"]=> string(0) "" ["smtppass"]=> string(0) "" ["smtphost"]=> string(9) "localhost" ["debug"]=> int(0) ["caching"]=> string(1) "0" ["cachetime"]=> string(3) "900" ["language"]=> string(5) "en-GB" ["secret"]=> NULL ["editor"]=> string(4) "none" ["offset"]=> int(0) ["lifetime"]=> int(15) } } } ["_errors"]=> array(0) { } } DB function failed with error number 1046
No database selected SQL=SELECT * FROM `jos_content` WHERE `catid` = 42NULL
а если по-русски, то внутри функции getDBO() загрузился конфиг из файла /libraries/joomla/config.php, в котором указаны неправильные префиксы, неправильные базы... да и вообще неправильное всё. Конечно, можно просто исправить в нём, но такое решение было бы расово неверным.
Засим прошу вас ткнуть меня носом в мои нубские ошибки, чтобы я смог-таки загрузить правильных конфиг и сделать запрос к БД.
Спасибо.


Повернутись до “Розробка та модифікація розширень”

Хто зараз онлайн

Зараз переглядають цей форум: 0 і 0 гостей