Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2009, 17:08   #21
Metandrostenalon
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 108
По умолчанию

можно в функции обозначить
Код:
global $a;
$a = 1;
php,javascript
Metandrostenalon вне форума Ответить с цитированием
Старый 13.10.2009, 13:00   #22
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

не работает почему-то.

В первой функции:
$pollselect = rand(1,5);
$GLOBALS['pollfile'] = $pollselect.'.txt';

В другой функции пробую получить доступ к $GLOBALS['pollfile']:
$fh = file($GLOBALS['pollfile']);
- и вместо этого получаю: Notice: Undefined index: pollfile in E:\.......\functions.php on line 343

такое впечатление что это объявление существует только в теле первой функции. Если так, тогда опять же вернемся к вопросу - как объявить и присвоить глобальной переменной значение внутри функции.
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo

Последний раз редактировалось regman; 13.10.2009 в 13:06.
regman вне форума Ответить с цитированием
Старый 13.10.2009, 13:06   #23
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

regman
Приведите весь код, из того, что вы написали, причина проблемы не ясна. Скорее всего, первая функция не была вызвана.
Arigato вне форума Ответить с цитированием
Старый 13.10.2009, 13:16   #24
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

Первая функция у меня отвечает за отображение блока голосования, который присутствует на каждой странице сайта.
function ShowPoll()
{
$pollselect = rand(1,5);
$GLOBALS['pollfile'] = $pollselect.'.txt';
$path = "../polls/";
if (!(file_exists($path.$GLOBALS['pollfile'])))
{
$path = "polls/";
}
$f = file($path.$GLOBALS['pollfile']);
$k = count($f)-1;
for ($i=0; $i<$k; $i=$i+1)
{
if (!($i==0))
{
$s = $f[$i];
$str = trim($s);
$arr = explode('|',$str);
$pollvariants[$i] = $arr[0];
$pollcount[$i] = $arr[1];
}
}
echo $GLOBALS['pollfile'];
include($path."votesh.inc");
}

Вторая - как результат нажатия кнопки "Проголосовать". Которая редиректит на страницу со скриптом обработки, который в свою очередь и вызывает вторую функцию:

function MakeVote()
{
$fh = file($GLOBALS['pollfile']);
$fr = fopen($GLOBALS['pollfile'],"w");
$k = $_POST['votevariant'];
echo $GLOBALS['pollfile'];
$i = 0;
$z = 0;
$d = count($fh)-1;
foreach ($fh as $str)
{
$str = trim($str);
$arr = explode("|",$str);
if ($i==$k)
{
$arr[1] = $arr[1]+1;
$fh[$k] = implode("|",$arr);
$fh[$k] = $fh[$k]."\n";
}
$z = $z+$arr[1];
if ($i==$d)
{
$fh[$i] = $z;
}
if (!(fwrite($fr, $fh[$i])))
{
echo "Ошибка записи";
}
$i=$i+1;
}
fclose($fr);
//header("Location: ".$_SERVER['HTTP_REFERER']); - закомментил для отлова ошибок
}

Если указать явно какой файл голосования открыть - тогда проблем не возникает - все отлично голосует и записывает в файли тут же отображает. Но я решил заделать несколько голосований, и тут вылезло...
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo

Последний раз редактировалось regman; 13.10.2009 в 13:36.
regman вне форума Ответить с цитированием
Старый 13.10.2009, 13:37   #25
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от regman
Вторая - как результат нажатия кнопки "Проголосовать". Которая редиректит на страницу со скриптом обработки, который в свою очередь и вызывает вторую функцию:
Видимо, у вас вызывается 2-я функция, при том 1-я до неё не вызывается. Соответственно, переменная $GLOBALS['pollfile'] не определена.
Arigato вне форума Ответить с цитированием
Старый 13.10.2009, 13:56   #26
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Видимо, у вас вызывается 2-я функция, при том 1-я до неё не вызывается. Соответственно, переменная $GLOBALS['pollfile'] не определена.
Первая функция вызывается всегда при отображении любой страницы сайта. Об этом свидетельствует наличие блока голосования (как я упоминал выше). Разве массив $GLOBALS при переходе с одной страницы на другую обнуляется (или что там с ним происходит)?? Или вообще какое время жизни этого массива?? Или он только существует во время выполнения отдельного скрипта??
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo
regman вне форума Ответить с цитированием
Старый 13.10.2009, 14:22   #27
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от regman
Разве массив $GLOBALS при переходе с одной страницы на другую обнуляется (или что там с ним происходит)??
Естественно переменные сбрасываются. Глобальные переменные - это те, которые доступны как внутри функций, так и вне функций. Если нужно передавать значение между скриптами, то можно использовать файлы, БД или куки пользователя.
Arigato вне форума Ответить с цитированием
Старый 13.10.2009, 14:57   #28
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Естественно переменные сбрасываются. Глобальные переменные - это те, которые доступны как внутри функций, так и вне функций. Если нужно передавать значение между скриптами, то можно использовать файлы, БД или куки пользователя.
Спасибо, теперь многое разъяснилось.

---------------------------------

Решил проблему с помощью сессий.
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo

Последний раз редактировалось regman; 14.10.2009 в 09:27.
regman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глобальные переменные tae1980 Microsoft Office Excel 16 20.11.2013 08:41
Помогите пожалуйста на "Символьные переменные" apetr Паскаль, Turbo Pascal, PascalABC.NET 4 30.11.2008 07:41
Помогите исправить косяк в задаче на динамические переменные списки Taisja Помощь студентам 2 31.05.2008 21:49
Глобальные хуки Zeraim Win Api 2 24.05.2008 16:00