Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.02.2009, 22:59
Интересующийся
Отправить личное сообщение для skyfish Посмотреть профиль Найти все сообщения от skyfish
 
Регистрация: 17.12.2008
Сообщений: 16

Как лучше сделать глобальный массив
Смысл какой. По нажатию на кнопку аяксом из базы рандомно подгружаю картинки. Чтобы картинки не повторялись, заношу их имена в массив и прик аждом новом нажатии проверяю. Вопрос где хранить этот массив. Сначала сделал сессию в PHP в скрипте который отдает аяксу инфу. Тестировал этот файл через браузер - все работает. проверка идет отлично. Но когда аяксом посылается этому файлу запрос на выдачу новых картинок, сессия как я понял не открывается, и проверка не идет. Как легче всего сделать такую проверку, или мой вариант тоже катить и я где то ошибся.
Ответить с цитированием
  #2 (permalink)  
Старый 16.02.2009, 23:24
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от skyfish
Но когда аяксом посылается этому файлу запрос на выдачу новых картинок, сессия как я понял не открывается
неправда.
если вы конечно все делаете правильно.
ищите проблемное место.выкладывайте.

что же до "костыльных" решений, то вы всегда можете в браузере поместить в глобальную область видимости window необходимый вам массив.
пока вкладка открыта, данные там будут.

но все-таки проверьте с сессией, ибо она должны открыватся.
Сделайте пометку в возвращаемом запросе, если сессия уже открыта, и проверьте
Ответить с цитированием
  #3 (permalink)  
Старый 16.02.2009, 23:41
Интересующийся
Отправить личное сообщение для skyfish Посмотреть профиль Найти все сообщения от skyfish
 
Регистрация: 17.12.2008
Сообщений: 16

ok спасибо. посмотрю
Ответить с цитированием
  #4 (permalink)  
Старый 17.02.2009, 09:24
Интересующийся
Отправить личное сообщение для skyfish Посмотреть профиль Найти все сообщения от skyfish
 
Регистрация: 17.12.2008
Сообщений: 16

require_once("../config.php");


$mycnt2=mysql_query("Выбор Количество картинок") or die(mysql_error());
$mycnt=mysql_result($mycnt2,0);

//echo $mycnt;

if (!isset($_SESSION['mem']))
{
session_start();
isset($_SESSION['mem']);


}
if (!isset($_SESSION['is'])) { $_SESSION['is']=0; }


if ($_SESSION['is']==0) {$_SESSION['mem'][0]='test';}


function validimg($vname)
{
$ktrue=1;
for ($i=0;$i<=$_SESSION['is'];$i++)
{
	if ($_SESSION['mem'][$i]==$vname) { $ktrue=0;}
}

if ($ktrue) 
{
	
$_SESSION['is']=$_SESSION['is']+1;
$a=$_SESSION['is'];
$_SESSION['mem'][$a]=$vname;
}

return $ktrue;
}



$kktrue=1;
while ($kktrue)
{
$f=rand(0,$mycnt);
$sp1=mysql_query("Выбор записи где картинка") or die(mysql_error());
$sp11=mysql_fetch_array($sp1);
$kktrue=validimg($sp11['img']);
}



$kktrue=1;
while ($kktrue)
{
$k=rand(0,$mycnt);
$sp2=mysql_query("Выбор записи где картинка") or die(mysql_error());

$sp22=mysql_fetch_array($sp2);
$kktrue=validimg($sp22['img']);
}


Что то ни как не хочет работать. Этот код.
Ответить с цитированием
  #5 (permalink)  
Старый 17.02.2009, 18:05
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

посмотрел ваш код
по логике есть ошибка:у вас в цикле получаются изображения до тех пор, пока не будет загружено ошибочное.
это гарантированный перерасход системных ресурсов, и отказ в малом проценте случаев.
"Выбор записи где картинка"
запишите как выглядит этот ваш запрос?
если он возвращает первый рисунок из базы, то только его пользователь и увидет.
потому что ваши циклы будут завершатся после первого фейлового рисунка.
надо записать циклы так:
do
{
$k=rand(0,$mycnt);
$sp2=mysql_query("Выбор записи где картинка") or die(mysql_error());
 
$sp22=mysql_fetch_array($sp2);
$kktrue=validimg($sp22['img']);
}
while (!$kktrue)

И при этом не забыть возвращать из базы случацную картинку, а не первую попавшуюся

и еще один вопрос:я не увидел у вас нигде вывода в браузер.
он дальше?
или вы про него забыли, полагая что, что переменные в сессии будут автоматически появлятся и в клиенте.это не так, если что
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать локальную переменную глобальной?? Дмитрий Общие вопросы Javascript 8 02.11.2010 03:33
Как сделать справочное окно? Vlaimir Events/DOM/Window 13 05.01.2009 14:06
Как сделать такую галерею crisco Events/DOM/Window 4 23.12.2008 16:28
Как сделать слой неактивным AlexMak Events/DOM/Window 3 04.12.2008 15:56
Скроллбар, как сделать свой? Destrifer Элементы интерфейса 2 01.12.2008 23:48