С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
__PION__
956 / 797 / 85
Регистрация: 21.07.2010
Сообщений: 3,521
1

Работа с DOM

23.11.2012, 12:57. Просмотров 2059. Ответов 10
Метки нет (Все метки)

Привет!
Есть фильтр со списком авто, при поиске нужно чтобы выбранные авто сохранялись выделенными, для этого значения я сохраняю в сессию, потом сверяю.
Минус в том, что список берется целиком из файла, поэтому решил подключить класс для работы с DOM и выделять элементы в списке ч/з него.
Вот код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Подкл. библ.
include 'simple_html_dom.php';
// Содержимое файла
$html = file_get_html(SITE_ROOT.'text/auto.txt');
// Выбираю все чекбоксы (элементы в списке отмечаются ч/з чекбоксы)
$input = $html->find('input');
 
// Далее сверка со значением в сессии и попытка чека чекбоксов
if (isset($_SESSION['search']['auto'])) {
  foreach ($input as $k => $v) {
    foreach ($_SESSION['search']['auto'] as $key => $val) {
       if ($input[$k]->value == $val) { 
          $input[$k]->checked = 'checked';
       }
    }
  }
}
вот это условие
PHP
1
if ($input[$k]->value == $val)
есть true, я проверил значения совпадают.
Но почему то в чекбоксах не создаются атрибуты checked="checked"

Почему не работает?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 12:57
Ответы с готовыми решениями:

PHP DOM
Нужно вытащить значение < тег параметр=параметр > значение </ тег >...

Кодировка DOM?
$line = '<h3 last_modified="1369307500"...

PHP и DOM
Всем привет. Я тут притендую на вакансия, в которой следующие требования:...

Simple HTML DOM
$html = str_get_html($content); $content - содержит весь html-код страницы...

Сохранение в dom xml
Как сохранить найденные "куски" 'catalog' из xml файла, скажем по 10...

10
Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 820
23.11.2012, 13:01 2
что за класс? самописный? мы то откуда знаем, почему он не работает как нужно??

phpfaq.ru/debug

чем встроенные средства для работы с DOM не устраивают?
0
__PION__
956 / 797 / 85
Регистрация: 21.07.2010
Сообщений: 3,521
23.11.2012, 13:15  [ТС] 3
Цитата Сообщение от Василий Макогон Посмотреть сообщение
чем встроенные средства для работы с DOM не устраивают?
я думал это и есть встроенный.
а какие есть встроенные, не средства для работы с XML?
0
basili4
201 / 198 / 4
Регистрация: 13.06.2012
Сообщений: 1,011
Записей в блоге: 3
23.11.2012, 13:44 4
Love_and_Peace, а счего они должны появлятся в чек боксах само дерево в html не выгружается во всяком случае на приведенном листинге.
0
__PION__
956 / 797 / 85
Регистрация: 21.07.2010
Сообщений: 3,521
23.11.2012, 13:56  [ТС] 5
Цитата Сообщение от basili4 Посмотреть сообщение
Love_and_Peace, а счего они должны появлятся в чек боксах само дерево в html не выгружается во всяком случае на приведенном листинге.
так само дерево уже есть на странице, зачем его снова выгружать? я хочу уже в существующем списке сделать чеки

Добавлено через 1 минуту
в $input содержится все выделенные при поиске элементы в списке, к ним я и обращаюсь
0
basili4
201 / 198 / 4
Регистрация: 13.06.2012
Сообщений: 1,011
Записей в блоге: 3
23.11.2012, 14:11 6
попробовал воссоздать подобный код. У меня checked выставляется.
0
__PION__
956 / 797 / 85
Регистрация: 21.07.2010
Сообщений: 3,521
23.11.2012, 14:43  [ТС] 7
Цитата Сообщение от basili4 Посмотреть сообщение
попробовал воссоздать подобный код. У меня checked выставляется.
вах, можно код посмотреть? может я чет не так делаю..

Добавлено через 23 минуты
щас проверил какие атрибуты содержит чекбокс, среди них есть чекнутость
PHP
1
echo '<pre>'; print_r($input[$k]->attr); echo '</pre>';
выводит
Код
Array
(
    [type] => checkbox
    [name] => auto[]
    [value] => 135
    [id] => auto100_135
    [class] => auto
    [checked] => checked
)
но смотрю в firebug, там нет вновь появившегося атрибута ([checked] => checked), да и сами выбранные чекбоксы в не чекнутом состоянии.
Ничего не понимаю, из-за чего такое может быть?
0
basili4
201 / 198 / 4
Регистрация: 13.06.2012
Сообщений: 1,011
Записей в блоге: 3
23.11.2012, 14:46 8
сделайте
PHP
1
echo $html
все будет
1
__PION__
956 / 797 / 85
Регистрация: 21.07.2010
Сообщений: 3,521
23.11.2012, 14:48  [ТС] 9
Цитата Сообщение от basili4 Посмотреть сообщение
сделайте
echo $html
все будет
вместо существующего списка?
а куда уже имеющийся список девать, удалить? как?
0
basili4
201 / 198 / 4
Регистрация: 13.06.2012
Сообщений: 1,011
Записей в блоге: 3
23.11.2012, 14:52 10
Кажется я понял в чем у вас проблема.

PHP
1
2
3
4
5
6
 foreach ($html->find('input') as $k => $v) {
    foreach ($_SESSION['search']['auto'] as $key => $val) {
       if ($html->find('input',$k)->value == $val) { 
          $html->find('input',$k)->checked = 'checked';
       }
    }
Так должно работать
1
__PION__
956 / 797 / 85
Регистрация: 21.07.2010
Сообщений: 3,521
23.11.2012, 15:00  [ТС] 11
вроде работает, работает и по старому, поставив условие на существование сессии поиска, мол, если есть сессия, то подставить $html, иначе список из файла как есть.
Последний предложенный код долго подгружает страницу.
и такой еще минус -
если выбрать чекбоксы, а потом убрать или добавить еще, то при отправке формы в списке выбранными остаются старые чекбоксы
0
23.11.2012, 15:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2012, 15:00

Php и Simple HTML DOM
На локальном Денвер сервере парсер работает прекрасно, а на удаленном код вида:...

Simple html dom - не парсит
Всем привет! Прошу помощи, использую simple_html_dom.php: &lt;? include...

Интерфейс DOM для PHP
Объясните пожалуйста членораздельно (т.е. для одаренных:)) почему этот самый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru