1) объявляю глобальный массив на одной странице, забиваю в него данные в ней же (parsing.php);
2) вывожу его скриптом на другой страницы (menus.php);
3) проверяю, есть ли в нем данные на третьей странице (index.php) - есть!
а теперь:
4) в index.php пытаюсь реализовать технологию AJAX: по нажатию на ссылку - идет обновление только части данных, а именно: кликаю, например, на ссылку с id = "1" данные передаются на страницу getnew.php и там из моего глобального массива должен выбраться элемент с индексом = "1" и передаться назад в index.php. AJAX реализован, он данные передает, но ПРОБЛЕМА в том, что на странице getnew.php мой глобальный массив "не видится", т.е. ставлю такое условие и оно не выполняется :
if (isset(@GLOBALS['array_of_news']))
{
...
}
Спустя 1 час, 42 секунды (9.01.2010 - 08:55) VolCh написал(а):
Вообще странный синтаксис @GLOBALS обычно $GLOBALS, но это мелочи, насколько я понял. Не очень понятно, как работают пункты 1-3, то есть даже они не должны работать (если я правильно понял все эти "забиваю", "вывожу", "проверяю"). Все переменные, включая глобальные и суперглобальные, существуют только в момент работы скрипта. Скрипт выдал в браузер результат, завершился и всё, никаких переменных. Два исключения, и то не постоянных - куки и сессии.
Спустя 1 час, 1 минута, 3 секунды (9.01.2010 - 09:56) ИНСИ написал(а):
VolCh либо константа подойдет, мне кажется ?
anton_nestor в следующий раз, постарайся пожалуйста использовать другой подход к объяснению проблемы. Потому что от этого ведь зависит: Смогут ли тебе помочь
anton_nestor в следующий раз, постарайся пожалуйста использовать другой подход к объяснению проблемы. Потому что от этого ведь зависит: Смогут ли тебе помочь
Спустя 1 час, 48 минут, 7 секунд (9.01.2010 - 11:44) VolCh написал(а):
welbox2 вроде массив динамически формируется, чего-то там парсится... Хотя может и пойдёт, а может сериализация устроит
Спустя 4 минуты, 50 секунд (9.01.2010 - 11:49) anton_nestor написал(а):
Господа, может Вам частично код подкинуть? Просто думал обойтись без этого...
Спустя 6 минут, 57 секунд (9.01.2010 - 11:56) VolCh написал(а):
anton_nestor
суть в том, что в getnew.php $array_of_news должен формироваться заново, либо храниться в куках/сессиях/файле/бд, ну как извращение в каком-нить memcached и в getnew.php считываться
суть в том, что в getnew.php $array_of_news должен формироваться заново, либо храниться в куках/сессиях/файле/бд, ну как извращение в каком-нить memcached и в getnew.php считываться
Спустя 33 минуты, 19 секунд (9.01.2010 - 12:29) anton_nestor написал(а):
VolCh: с сессиями пробовал изначально - тот же результат, на куки - нет желания.
Вот краткий образ работы пунктов 1-3:
есть страница "index.php":
-----------------------------
на странице "parsing.php":
--------------------------------
на странице "menus.php":
Все. Посредством описанных выше действий на странице "index.php" получил данные из глобального массива $GLOBALS['array_of_news'].
Теперь, когда я на странице "index.php" нажимаю на ссылку, посредством AJAXа обращаюсь к странице "getnew.php", в которой есть такой код и это все что там есть:
Вот такая картина. Если убрать вотрую часть условия и вывести просто какую-нибудь строчку текста, то данные аяксом передаются.
Что скажите в таком случае? Как быть?
Вот краткий образ работы пунктов 1-3:
есть страница "index.php":
...
<body>
...
<?php
/*обращаюсь к странице, где будет сформирован $GLOBALS['array_of_news']*/
require_once('parsing.php');
?>
...
</body>
-----------------------------
на странице "parsing.php":
<?php
/*создал массив*/
$i = 0;
$GLOBALS['array_of_news'] = array(
$i => array(
"pubDate" => "",
"title" => "",
"discription" => ""
)
);
/*заполнил массив*/
foreach($news as $n)
{
$GLOBALS['array_of_news'][$i]['pubDate'] = $n['pubDate'];
$GLOBALS['array_of_news'][$i]['title'] = iconv("UTF-8", "Windows-1251", $n['title']);
$GLOBALS['array_of_news'][$i]['discription'] = iconv("UTF-8", "Windows-1251", $n['description']);
$i++;
}
/*обращаюсь к треттей странице (menus.php), в ней данные будут выводиться в табличку*/
require_once("menus.php");
printParser();
?>
--------------------------------
на странице "menus.php":
<?php
...
function printParser()
{
/*заполняю данными таблицу*/
for ($i=0;$i<=(count($GLOBALS['array_of_news']));$i++)
{
print '<tr><td>';
echo $GLOBALS['array_of_news'][$i]['title'];
print '</td></tr>';
...
}
}
?>
Все. Посредством описанных выше действий на странице "index.php" получил данные из глобального массива $GLOBALS['array_of_news'].
Теперь, когда я на странице "index.php" нажимаю на ссылку, посредством AJAXа обращаюсь к странице "getnew.php", в которой есть такой код и это все что там есть:
<?php
if ((isset($_GET['id'])) and (isset($GLOBALS['array_of_news'])))
{
echo $GLOBALS['array_of_news'][$_GET['id']]['title'];
}
?>
Вот такая картина. Если убрать вотрую часть условия и вывести просто какую-нибудь строчку текста, то данные аяксом передаются.
Что скажите в таком случае? Как быть?
Спустя 1 час, 1 минута, 49 секунд (9.01.2010 - 13:31) VolCh написал(а):
anton_nestor
С терминологией у вас проблемы - первые три файла все не отдельные страницы, а формируют одну страницу.
Выхода по сути два - или разобраться с сессиями (или еще как-то хранить инфу вне скриптов - в файле или БД), или тупо в getnew.php инклудить parsing.php, чтобы он формировал массив заново (только перенести
P.S. Чувство дежавю - сам когда переходил из оффлайн-программирования к веб-, ровно такие же проблемы испытывал, раз объявил переменную глобальной, значит она должна быть доступна из любого скрипта
С терминологией у вас проблемы - первые три файла все не отдельные страницы, а формируют одну страницу.
Выхода по сути два - или разобраться с сессиями (или еще как-то хранить инфу вне скриптов - в файле или БД), или тупо в getnew.php инклудить parsing.php, чтобы он формировал массив заново (только перенести
require_once("menus.php");в index.php
printParser();
P.S. Чувство дежавю - сам когда переходил из оффлайн-программирования к веб-, ровно такие же проблемы испытывал, раз объявил переменную глобальной, значит она должна быть доступна из любого скрипта
Спустя 2 часа, 12 минут, 23 секунды (9.01.2010 - 15:43) ИНСИ написал(а):
anton_nestor мне кажется тебе вот это:
надо заменить на
то есть, ты просто не объявил глобальным сам массив.
$GLOBALS['array_of_news'] = array(
$i => array(
"pubDate" => "",
"title" => "",
"discription" => ""
)
);
надо заменить на
global $GLOBALS['array_of_news'] = array(
$i => array(
"pubDate" => "",
"title" => "",
"discription" => ""
)
);
то есть, ты просто не объявил глобальным сам массив.
Спустя 2 минуты, 18 секунд (9.01.2010 - 15:46) VolCh написал(а):
welbox2 $GLOBALS - это предопредленный массив