Массив полей, и массив элементов

Обсуждение новых возможности программы, которые в будущем хотелось бы видеть в ней
Ответить
grabus
Сообщения: 11
Зарегистрирован: 02 мар 2009, 16:04

Массив полей, и массив элементов

Сообщение grabus » 17 мар 2009, 11:00

Хотелось бы, чтобы в xhe был массив элементов.
т.е. например, если на странице несколько input с одинаковым name, то чтоб можно было пройтись массивом по всем элементам и выдернуть все которые нужны.
стандартные функции пока вроде не позволяют вытащить несколько одинаковых объектов. возвращается все время первый.

и вообще, был бы такой массив, было бы удобно.

можно конечно и самому такое написать, но имхо геморно. особенно для каждого проекта отдельно писать.

а если такое будет, и в простом для использования варианте, было бы супер

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Сообщение bigfozzy » 16 сен 2009, 21:59

а можно по подробнее - что за массив и как им управлять ?

qwe
Сообщения: 24
Зарегистрирован: 08 июл 2009, 08:39

Сообщение qwe » 16 ноя 2009, 09:12

топикстартер, наверное, имел ввиду примерно это:

1. xweb открывает страницу, отрабатывает вся ява и т.д.
2. после этого хорошо бы заполнить пхп-шный массив тем, что есть на странице. (input, buttons, images, radio, check, textarea и т.д.)

к примеру, назовем массив current_page.

Код: Выделить всё

print_r($current_page);

Array
(
    [input] => Array
        (
            [0] => 'value from $input->get_value_by_number(0)'
            [1] => '$input->get_value_by_number(1)'
            [2] => '$input->get_value_by_number(2)'
            [3] => '$input->get_value_by_number(3)'
        )
    [input_by_name] => Array
        (
            [0_xweb_login] => 'value from $input->get_value_by_number(0)'
            [1_xweb_password] => '$input->get_value_by_number(1)'
            [2_xweb_password] => '$input->get_value_by_number(2)'
            [3_xweb_login] => 'value from $input->get_value_by_number(3)'
        )

    [images] => Array
        (
            [0] => 'value from $image->get_href_by_number(0)'
            [1] => '$image->get_href_by_number(1)'
        )
)
в данном примере на странице есть два одинаково названных поля login и два поля password.

0_xweb_login, 0 - порядковый номер, _xweb_ - префикс, чтобы потом сплитом отделять порядковый номер от имени поля.

основной смысл этого, чтобы из пхп можно было узнать что есть на открытой странице и как оно называется. ну и для удобства - значения элементов.

кстати, если пойти немного дальше, то хорошо бы, чтобы xweb отдавал таким же образом и другие параметры, например куки.
[url=https://xn--80awbbeioodeq4h3a.xn--p1ai/forum/viewtopic.php?t=222]полезная хотелка[/url] :)

bok2007
Сообщения: 32
Зарегистрирован: 22 июн 2010, 18:05

Сообщение bok2007 » 07 июл 2010, 16:14

Коснулись вопроса полей с одинаковыми названиями. То же столкнулся, так и не понял как их заполнять. К примеру есть 2 одинаковых по именам инпута. При попытке заполнить по имени, заполняется только 1 инпут, который стоит выше, а второй остается пустой, но по идеи должны заполнится оба инпута. Как мне все-таки заполнить оба инпута по имени элемента?

Germ
Сообщения: 44
Зарегистрирован: 09 июл 2010, 19:14

Сообщение Germ » 09 июл 2010, 23:42

bok2007 писал(а):Коснулись вопроса полей с одинаковыми названиями. То же столкнулся, так и не понял как их заполнять. К примеру есть 2 одинаковых по именам инпута. При попытке заполнить по имени, заполняется только 1 инпут, который стоит выше, а второй остается пустой, но по идеи должны заполнится оба инпута. Как мне все-таки заполнить оба инпута по имени элемента?
Варианты:
использовать другие атрибуты?
$input->set_value_by_number($n,'')?
поставить фокус на ближайший к нему элемент и эмуляцией нажатия TAB добраться до нужного?

bok2007
Сообщения: 32
Зарегистрирован: 22 июн 2010, 18:05

Сообщение bok2007 » 10 июл 2010, 20:26

Germ писал(а):
bok2007 писал(а):Коснулись вопроса полей с одинаковыми названиями. То же столкнулся, так и не понял как их заполнять. К примеру есть 2 одинаковых по именам инпута. При попытке заполнить по имени, заполняется только 1 инпут, который стоит выше, а второй остается пустой, но по идеи должны заполнится оба инпута. Как мне все-таки заполнить оба инпута по имени элемента?
Варианты:
использовать другие атрибуты?
$input->set_value_by_number($n,'')?
поставить фокус на ближайший к нему элемент и эмуляцией нажатия TAB добраться до нужного?
Обращение по ID элемента не подходит, т.к. он на разных сайтах различный. Может есть еще какие-нибудь варианты?

Germ
Сообщения: 44
Зарегистрирован: 09 июл 2010, 19:14

Сообщение Germ » 16 июл 2010, 09:52

Вот например цикл по всем $input элементам, который заполняет те, у которых name нужный:

Код: Выделить всё

for($i=0;$i<$input->get_count();$i++){  
	if($input ->get_name_by_number($i) == "искомое_имя")
		$input ->set_value_by_number($i,"необходимая_строка");
	}
}
Работоспособность не проверял, но принцип должен быть ясен.

Ответить