function manage_expiration($option,$plugins){
global $database,$mosConfig_absolute_path;
...
$database->setQuery( "SELECT id FROM #__adsmanager_ads WHERE recall_mail_sent = '1' AND expiration_date < CURDATE()");
$idsarray = $database->loadResultArray();
if(isset($idsarray) && count($idsarray) > 0){
foreach($idsarray as $adid)
{
remove_ad($adid,$conf,$plugins);
}
}...
Из нее вызывается функция удаления:
function remove_ad($adid,$conf,$plugins)
{
global $database,$mosConfig_absolute_path;
$database->setQuery("SELECT * FROM #__adsmanager_ads WHERE id=$adid");
$database->loadObject($ad);
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$database->setQuery("DELETE FROM #__adsmanager_ads WHERE id=$adid");
if ($database->getErrorNum()) {
echo $database->stderr();
} else {
$database->query();
}
$database->setQuery("DELETE FROM #__adsmanager_adcat WHERE adid=$adid");
if ($database->getErrorNum()) {
echo $database->stderr();
} else {
$database->query();
}...
Почему-то не передаётся параметр $adid (да и остальные думаю тоже) Вставил код из функции внутрь цикла - всё заработало. Подскажите, пожалуйста, в чем проблема?
Версия PHP на сервере: 5.2.8
Спустя 33 минуты, 44 секунды (18.01.2010 - 18:04) Johnny написал(а):
страшно спросить... а внутри ф-и remove_ad не пробовал
запускать что-то типа: print_r( func_get_args() );
запускать что-то типа: print_r( func_get_args() );
Спустя 4 минуты, 15 секунд (18.01.2010 - 18:08) Timoshkin написал(а):
Я извиняюсь, просто я новичок в ПХП, примерно так должно выглядеть?
print_r( func_get_args($adid) )
print_r( func_get_args($adid) )
Спустя 2 минуты, 54 секунды (18.01.2010 - 18:11) Johnny написал(а):
нет, просто внутри функции твоей первой строкой воткни print_r( func_get_args() );
эта конструкция распечатает все аргументы, переданные функции.
ну а дальше смотреть надо...
эта конструкция распечатает все аргументы, переданные функции.
ну а дальше смотреть надо...
Спустя 11 минут, 14 секунд (18.01.2010 - 18:22) Lex_R написал(а):
$database->loadObject($ad); вроде как переменная $ad не определена нигде
Спустя 13 минут, 26 секунд (18.01.2010 - 18:36) Timoshkin написал(а):
Цитата (Lex_R @ 18.01.2010 - 15:22) |
$database->loadObject($ad); вроде как переменная $ad не определена нигде |
Дело в том, что если код
function remove_ad</span>вставлен внутри цикла, то он работает как часики
А здесь $ad нормально срабатывает
function sendEmail($ad,$conf,$option) {
global $mosConfig_mailfrom, $mosConfig_fromname,$mosConfig_sitename;
if ($ad->email) {
$link = sefRelToAbs("index.php?option=$option&page=expiration&adid=".$ad->id);
$body = $conf->recall_text;
$body .= sprintf(ADSMANAGER_EXPIRATION_MAIL_BODY,$ad->ad_headline,$conf->recall_time,$link,$link);
mosMail($mosConfig_mailfrom,$mosConfig_fromname,$ad->email,$mosConfig_sitename." / ".ADSMANAGER_EXPIRATION_MAIL,$body,1);
}
}
Спустя 2 минуты, 26 секунд (18.01.2010 - 18:38) Johnny написал(а):
в том и дело что $ad внутрь функции никто не передает, и как глобальная она тоже не объявлена.
Спустя 1 минута, 39 секунд (18.01.2010 - 18:40) Lex_R написал(а):
Сделайте вот так в функции global $database,$mosConfig_absolute_path, $ad;
Спустя 56 секунд (18.01.2010 - 18:41) Timoshkin написал(а):
Цитата (Johnny @ 18.01.2010 - 15:38) |
в том и дело что $ad внутрь функции никто не передает, и как глобальная она тоже не объявлена. |
Я так и понял, а как правильно её объявить, чтобы она была доступной? Что-нибудь типа Public, наверное?
Спустя 31 секунда (18.01.2010 - 18:41) Johnny написал(а):
ответ постом выше = )
Спустя 1 минута, 30 секунд (18.01.2010 - 18:43) Timoshkin написал(а):
Цитата (Lex_R @ 18.01.2010 - 15:40) |
Сделайте вот так в функции global $database,$mosConfig_absolute_path, $ad; |
В обеих? Но почему тогда работает function sendEmail??
Спустя 3 минуты, 21 секунда (18.01.2010 - 18:46) Johnny написал(а):
потому, что, блин, у sendEmail первым параметром $ad идет...
Спустя 56 минут, 29 секунд (18.01.2010 - 19:43) Timoshkin написал(а):
$idsarray= $database->loadObjectList();
Сработает подсчет количества из Листа?
count($idsarray)
Спустя 9 минут, 35 секунд (18.01.2010 - 19:52) Timoshkin написал(а):
Подскажите в чем смысл функции stderr() понятно, что возвращает ошибку, но кому и куда, для чего она конкретно?
Спустя 15 минут, 54 секунды (18.01.2010 - 20:08) VolCh написал(а):
Timoshkin
вероятно, что возвращает свом результатом вывод из потока stderr какого-то приложения
Вообще, судя по коду, ты используешь какую-то библиотеку или фреймворк и даже не удосужился написать какую
вероятно, что возвращает свом результатом вывод из потока stderr какого-то приложения
Вообще, судя по коду, ты используешь какую-то библиотеку или фреймворк и даже не удосужился написать какую
Спустя 3 минуты (18.01.2010 - 20:11) Timoshkin написал(а):
Цитата (VolCh @ 18.01.2010 - 17:08) |
Timoshkin вероятно, что возвращает свом результатом вывод из потока stderr какого-то приложения Вообще, судя по коду, ты используешь какую-то библиотеку или фреймворк и даже не удосужился написать какую |
Компонент доски объявлений AdsManager 2.5.0 на Joomla. Переделываю, т.к. не всё работает + добавляю свои функции.
Спустя 8 минут, 4 секунды (18.01.2010 - 20:19) Timoshkin написал(а):
Цитата (Johnny @ 18.01.2010 - 15:11) |
нет, просто внутри функции твоей первой строкой воткни print_r( func_get_args() ); эта конструкция распечатает все аргументы, переданные функции. ну а дальше смотреть надо... |
А в броузер распечатает?
Спустя 2 минуты, 38 секунд (18.01.2010 - 20:22) VolCh написал(а):
Цитата |
А в броузер распечатает? |
С первого взгляда не полюбил Джумлу, потому не знаю. Адекватные CMS распечатают хотя бы в исходном тексте страницы, Джумла не знаю

Спустя 20 минут, 15 секунд (18.01.2010 - 20:42) Timoshkin написал(а):
Цитата (VolCh @ 18.01.2010 - 17:22) |
Адекватные CMS распечатают хотя бы в исходном тексте страницы |
А можно прикрутить МессажБокс к этому?
Спустя 31 минута, 5 секунд (18.01.2010 - 21:13) Timoshkin написал(а):
Цитата (VolCh @ 18.01.2010 - 17:22) | ||
С первого взгляда не полюбил Джумлу, потому не знаю. Адекватные CMS распечатают хотя бы в исходном тексте страницы, Джумла не знаю ![]() |
Сделал так:
echo "<script type='text/javascript'>Alert('BBBBBBBBBB')</script>";
не срабатывает, почему?
Спустя 9 минут, 34 секунды (18.01.2010 - 21:23) Krevedko написал(а):
а что должно по твоему произойти ?
Спустя 7 минут, 12 секунд (18.01.2010 - 21:30) Timoshkin написал(а):
Что-то типа мессажбокса, может я неправильно написал, если знаете, подскажите, плз, как это сделать.
Спустя 37 секунд (18.01.2010 - 21:31) Johnny написал(а):
судя по префиксам mos это джумла...
Спустя 4 минуты, 5 секунд (18.01.2010 - 21:35) Johnny написал(а):
Timoshkin
Ты вставь и посмотри че будет. Конечно она выплюнет все это в браузер... Главное удалить ее потом не забудь. И потом, чем история с переменной $ad закончилась? Либо сделай ее глобальной, либо как в другой функции "которая работает" передавай ее как аргумент...
Ты вставь и посмотри че будет. Конечно она выплюнет все это в браузер... Главное удалить ее потом не забудь. И потом, чем история с переменной $ad закончилась? Либо сделай ее глобальной, либо как в другой функции "которая работает" передавай ее как аргумент...
Спустя 1 минута, 3 секунды (18.01.2010 - 21:36) Timoshkin написал(а):
Цитата (Johnny @ 18.01.2010 - 18:31) |
судя по префиксам mos это джумла... Что-то типа мессажбокса, может я неправильно написал, если знаете, подскажите, плз, как это сделать. |
Можешь с этим помочь?
Спустя 1 минута, 39 секунд (18.01.2010 - 21:37) Timoshkin написал(а):
Цитата (Johnny @ 18.01.2010 - 18:35) |
Timoshkin Ты вставь и посмотри че будет. Конечно она выплюнет все это в браузер... Главное удалить ее потом не забудь. И потом, чем история с переменной $ad закончилась? Либо сделай ее глобальной, либо как в другой функции "которая работает" передавай ее как аргумент... |
Я так понял, $ad используется в remove_ad для заполнения значениями из таблицы, далее поля используются для удаления приаттаченных файлов. А строки удаляются через запрос SQL - DELETE.
Все работает. Забыл про файл Cron.php где записывается дата обращения к таблице, соответственно второй раз запрос не выполняется.
Все оказалось просто...
Спустя 29 минут, 29 секунд (18.01.2010 - 22:07) Timoshkin написал(а):
Цитата (Johnny @ 18.01.2010 - 18:35) |
Timoshkin Ты вставь и посмотри че будет. Конечно она выплюнет все это в браузер... Главное удалить ее потом не забудь. И потом, чем история с переменной $ad закончилась? Либо сделай ее глобальной, либо как в другой функции "которая работает" передавай ее как аргумент... |
Не выплюнула

