[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача значения переменной
Timoshkin
Здравствуйте, помогите пожалуйста!


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() );

Спустя 4 минуты, 15 секунд (18.01.2010 - 18:08) Timoshkin написал(а):
Я извиняюсь, просто я новичок в ПХП, примерно так должно выглядеть?

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 какого-то приложения

Вообще, судя по коду, ты используешь какую-то библиотеку или фреймворк и даже не удосужился написать какую

Спустя 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 распечатают хотя бы в исходном тексте страницы, Джумла не знаю rolleyes.gif

Спустя 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 распечатают хотя бы в исходном тексте страницы, Джумла не знаю rolleyes.gif

Сделал так:

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 закончилась? Либо сделай ее глобальной, либо как в другой функции "которая работает" передавай ее как аргумент...

Спустя 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 закончилась? Либо сделай ее глобальной, либо как в другой функции "которая работает" передавай ее как аргумент...

Не выплюнула sad.gif blink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.