[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как осуществить автозаполнение массива
Эдик
Добрый день!
Подскажите, как организовать автозаполнение массива, элементы которого добавлялись бы при каждом обращении к файлу.
Вот к примеру, происходит перебор всех текстовых полей и их значения поочередно передаются в файл php, где нужно сформировать массив данных
Отсюда данные:

function Pusk()
{
var query;
for(j = 0; j < document.top.elements.length; j++)
{
var e = document.top.elements[j];
if (e.type == "text")
{
query ='txt='+encodeURIComponent(document.top.elements[j].value);
Request(query);
}
}
}

Сюда:

session_start();
$txt = isset($_POST['txt'])?$_POST['txt']:NULL;
if(isset($_POST['txt']))
{
$_SESSION['norm_quan']=array();
$_SESSION['norm_quan'][]=$_POST['txt'];
}

И вот блин если 2 формы, то данные из 1-ой только заносятся в массив, а второй элемент-нулевой.В чем может быть проблема?



Спустя 13 минут, 48 секунд (5.08.2010 - 17:53) Lenarfate написал(а):
а если так
session_start();
$txt = isset($_POST['txt'])?$_POST['txt']:NULL;
if(isset($_POST['txt']))
{
$_SESSION['norm_quan'][$_POST['txt']]
}


Спустя 8 минут, 56 секунд (5.08.2010 - 18:02) Эдик написал(а):
Так не, это не подходит, получиться примерно такое:
$_SESSION['norm_quan'][3]

и само по себе это никакой информации не несет, тк
$_POST['txt']
- это цифра в поле, и мне надо, чтоб массив содержал эти цифры из нескольких полей

Спустя 4 часа, 2 минуты, 14 секунд (5.08.2010 - 22:04) Nord написал(а):
Вроде сессии не поддерживают хранение массивов. Можно, например, перед записью в сессии применять serialize к массиву:


session_start();
if(isset($_POST['txt'])){
if (isset($_SESSION['norm_quan'] )){
// Массив не пуст => добавить
$array = unserialize($_SESSION['norm_quan']);
$array[] = $_POST['txt'];
$_SESSION['norm_quan'] = serialize($array );
} else $_SESSION['norm_quan'] = serialize(array($_POST['txt'])); // Иначе создать массив
}


А лучше хранить номера в формате типа: 2;3;1;4;6


session_start();
if(isset($_POST['txt'])){
if (isset($_SESSION['norm_quan'] )) $_SESSION['norm_quan'] .= $_POST['txt'];
} else $_SESSION['norm_quan'] = $_POST['txt'];
}

Спустя 9 часов, 50 минут, 4 секунды (6.08.2010 - 07:54) linker написал(а):
Сессии поддерживают хранение массивов! Вот так '2;3;1;4;6' никогда не храни данные.

Как наиболее правильный вариант
for(j = 0; j < document.top.elements.length; j++) 
{
var e = document.top.elements[j];
if (e.type == "text")
query += 'txt=[]' + encodeURIComponent(e.value);
}
Request(query);
Тогда в PHP скрипте достаточно написать
$_SESSION['norm_quan'] = $_POST['text'];
Для проверки, а что же передается, в условие
if (e.type == "text")
вставь
alert(e.value);

Спустя 1 час, 15 минут, 1 секунда (6.08.2010 - 09:09) Nord написал(а):
linker, да, я был не прав

Спустя 11 часов, 17 минут, 46 секунд (6.08.2010 - 20:27) Эдик написал(а):
linker, вот в этой строке вся загвоздка:
query += 'txt=[]' + encodeURIComponent(e.value);

Получается вначале:
query='txt[]=2';

потом:
query='txt[]=2txt[]=3';
-И это получается полная ерунда. Вот если бы можно было передать готовый массив..
Быстрый ответ:

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