[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Постраничный вывод DOM элементов
kich
У меня есть DOM скрипт, который получает перечень из xml документа:
PHP
$basename='base.xml';
$doc = new DomDocument();
$doc DOMDocument::load($basename);
$params $doc->getElementsByTagName("FILE");
foreach (
$params as $param) {
    
$nameAdr=iconv("UTF-8""WINDOWS-1251",$param->attributes->getNamedItem("name")->nodeValue);
    
$date=iconv("UTF-8""WINDOWS-1251",$param->attributes->getNamedItem("date")->nodeValue);
    
$account=iconv("UTF-8""WINDOWS-1251",$param->attributes->getNamedItem("account")->nodeValue);
    
$itas=$param->getElementsByTagName('TITLE');
    foreach (
$itas as $ita){
        
$title=iconv("UTF-8""WINDOWS-1251",$ita->nodeValue);
    }
    
$bodyData=$param->getElementsByTagName('COMMENT');
    foreach (
$bodyData as $bodyD){
        
$comment=iconv("UTF-8""WINDOWS-1251",$bodyD->nodeValue);
    }
    
$kolobok"<p><b><a href=\"../articles/artic/$nameAdr\">$title</a></b><br />$comment<br /><b style=\"font-size:10px;color:#999\">$date&nbsp;[Просмотров: $account]</b></p>";
}
print 
"<p>Всего строк: <b>$params->length</b></p>";

И есть слизанный скрипт постраничного вывода (рабочий):
PHP
&#60;!-- Отображение пострачного вывода -->
<?php
$N 
145;
$perPage 10;
$currOffset 70;
if (isset(
$_GET['st'])) $currOffset $_GET['st'];
 
$currNum 0;
for (
$i 0$i $N$i += $perPage) {
    
$currNum++;
    if (
$i == $currOffset) {
        print 
' <b>'.$currNum.'</b> ';
    } else {
        print 
' <a href="?st='.$i.'">'.$currNum.'</a> ';
    }
}
print 
"<br><br>";
?>
 
<!-- Отображение данных(объектов) текущей страницы -->
<b>Объекты</b>:<br>
<?php
$end 
$currOffset $perPage;
if (
$end $N$end $N;
for (
$i $currOffset$i $end$i++) {
    print (
$i+1).'<br>';
}

Так вот, ни как не могу разобраться, куда вставлять переменную $kolobok, чтобы вывод был правивльным, т.е. не просто первый прочитанный элемент из xml, а все прочитанные строки



Спустя 1 час, 38 минут, 1 секунда (26.02.2009 - 19:19) bret написал(а):
Структуру ХМЛя покажи
У <FILE> нет ничего вроде id7

Спустя 4 минуты, 18 секунд (26.02.2009 - 19:23) kich написал(а):
Цитата (bret @ 26.02.2009 - 20:19)
Структуру ХМЛя покажи
У <FILE> нет ничего вроде id7

<?xml version="1.0" encoding="windows-1251"?>
<ARTICLES>
<FILE name="dostavka.php" date="ноябрь 2008" account="2">
<TITLE>Продажа на дистанции. Оформление сделки</TITLE>
<COMMENT>В настоящее время предприниматели начали серьезно рассматривать дистанционный способ торговли, то есть без личной встречи с покупателем и отсутствием возможности непосредственного ознакомления покупателя с товаром. В целом подобный вариант торговли выгоден бизнесменам. В частности, дистанционная торговля минимизирует затраты на аренду, оформление магазина...</COMMENT>
</FILE>
<FILE name="electronic.php" date="июль 2008" account="1">
<TITLE>Сдача отчетности в электронном виде. Право и обязанность</TITLE>
<COMMENT>Налоговый кодекс предусматривает два варианта представления отчетности: на бумажном носителе либо в электронном виде. Нередко инспекторы отказываются принимать у ИП отчеты на бумаге. В то же время обязанность сдавать отчетность в электронном виде распространяется лишь на некоторые категории налогоплательщиков...</COMMENT>
</FILE>
...
</ARTICLES>

Спустя 1 час, 21 минута, 43 секунды (26.02.2009 - 20:45) Viking написал(а):
дык ты колобку в цикле при каждой итерации новое значение присваиваешь, чтобы он все сохранял надо с точкой: $kolobok.=, и если я правильно понял, то надо первый скрипт переделать, вместо foreach поставить for с индексами с какого по какую строку показывать, хотя наверное лучше какойнить ид для них ввести
а зачем у тебя foreach для комментов? у тебя разве больше одного коммента на файл?

Спустя 17 минут, 58 секунд (26.02.2009 - 21:03) kich написал(а):
Цитата (Viking @ 26.02.2009 - 21:45)
а зачем у тебя foreach для комментов? у тебя разве больше одного коммента на файл?

Так он же отдельным тегом идет

Спустя 3 минуты, 12 секунд (26.02.2009 - 21:06) Viking написал(а):
Цитата
Цитата (Viking @ 26.02.2009 - 21:45)
а зачем у тебя foreach для комментов? у тебя разве больше одного коммента на файл?


Так он же отдельным тегом идет

дык у него же идет foreach для FILE, а внутри, вложенным циклом для 'COMMENT' и для 'TITLE' кстати тоже
но в каждом FILE их по одному, зачем циклом обходить?

Спустя 4 минуты, 59 секунд (26.02.2009 - 21:11) kich написал(а):
Цитата (Viking @ 26.02.2009 - 22:06)
Цитата
Цитата (Viking @ 26.02.2009 - 21:45)
а зачем у тебя foreach для комментов? у тебя разве больше одного коммента на файл?


Так он же отдельным тегом идет

дык у него же идет foreach для FILE, а внутри, вложенным циклом для 'COMMENT' и для 'TITLE' кстати тоже
но в каждом FILE их по одному, зачем циклом обходить?

Просто тупо прочитать содержимое тегов TITLE и COMMENT через
PHP
=$param->getElementsByTagName('TITLE')->

Не получается

И кстати, с циклом for тоже глюк. Хотя, этот глюк может возникать только из-за меня, так как я ток как два дня изучаю DOM, мож я неправильно функции применяю

Спустя 3 минуты, 27 секунд (26.02.2009 - 21:14) kich написал(а):
точнее через
PHP
$title=$param->getElementsByTagName('TITLE')->nodeValue;


Спустя 52 секунды (26.02.2009 - 21:15) Viking написал(а):
Цитата
Просто тупо прочитать содержимое тегов TITLE и COMMENT черезPHP
=$param->getElementsByTagName('TITLE')->

вообще должен, помню была запара в похожем случае, но все закончилось непомню чем, но хорошо, вроде там где-то надо добавить item(0)-> или что-то похожее

Спустя 1 минута, 6 секунд (26.02.2009 - 21:16) bret написал(а):
толком эту штуку не ковырял, тебе надо сначала дать каждому файлу уникальный идентификатор, а затем юзать код что-то вроде
PHP
$basename='base.xml';
$doc = new DomDocument();
$doc = DOMDocument::load($basename);
$params = $doc->getElementsByTagName("FILE");
foreach ($params as $param)
{
 if($param->get_attribute('id')==$_GET['st'])
 {
  $nameAdr=iconv("UTF-8", "WINDOWS-1251",$param->attributes->getNamedItem("name")->nodeValue);
  ...
  $kolobok= "<p><b><a href=\"../articles/artic/$nameAdr\">$title</a></b><br />$comment<br /><b style=\"font-size:10px;color:#999\">$date&nbsp;[Просмотров: $account]</b></p>";
  break;
 }
}
print(
$kolobok);
// вставить paginator

Спустя 1 минута, 40 секунд (26.02.2009 - 21:18) Viking написал(а):
собственно вот отрывок из рабочего скрипта, который я топикстартеру когда-то кидал
Цитата
$item = $doc->getElementsByTagName("FILE");
for($i=0; $i<$item->length;$i++)
  if($item->item($i)->getAttributeNode("filename")->nodeValue == $filename) {
    $item->item($i)->nodeValue++;
    break;
  }

Спустя 3 минуты, 25 секунд (26.02.2009 - 21:21) kich написал(а):
Цитата (Viking @ 26.02.2009 - 22:18)
собственно вот отрывок из рабочего скрипта, который я топикстартеру когда-то кидал
Цитата
$item = $doc->getElementsByTagName("FILE");
for($i=0; $i<$item->length;$i++)
  if($item->item($i)->getAttributeNode("filename")->nodeValue == $filename) {
    $item->item($i)->nodeValue++;
    break;
  }

Viking, biggrin.gif Признаюсь честно, ты в моей темке ранее кидал этот скрипт, и признаюсь честно, на нем я начинал осваивать DOM

Спустя 2 минуты, 8 секунд (26.02.2009 - 21:24) kich написал(а):
Цитата (bret @ 26.02.2009 - 22:16)
толком эту штуку не ковырял, тебе надо сначала дать каждому файлу уникальный идентификатор, а затем юзать код что-то вроде
PHP
$basename='base.xml';
$doc = new DomDocument();
$doc = DOMDocument::load($basename);
$params = $doc->getElementsByTagName("FILE");
foreach ($params as $param)
{
 if($param->get_attribute('id')==$_GET['st'])
 {
  $nameAdr=iconv("UTF-8", "WINDOWS-1251",$param->attributes->getNamedItem("name")->nodeValue);
  ...
  $kolobok= "<p><b><a href=\"../articles/artic/$nameAdr\">$title</a></b><br />$comment<br /><b style=\"font-size:10px;color:#999\">$date&nbsp;[Просмотров: $account]</b></p>";
  break;
 }
}
print(
$kolobok);
// вставить paginator

А индификатор какому тегу присваивать?

Спустя 3 минуты, 40 секунд (26.02.2009 - 21:27) Viking написал(а):
Цитата
собственно вот отрывок из рабочего скрипта, который я топикстартеру когда-то кидал

блин, это я твой ник с другим путаю всевремя, сори

Спустя 1 минута, 29 секунд (26.02.2009 - 21:29) Viking написал(а):
Цитата
Viking,Признаюсь честно, ты в моей темке ранее кидал этот скрипт, и признаюсь честно, на нем я начинал осваивать DOM

скоро будешь меня консультировать =)

Спустя 28 секунд (26.02.2009 - 21:29) kich написал(а):
Цитата (Viking @ 26.02.2009 - 22:27)
Цитата
собственно вот отрывок из рабочего скрипта, который я топикстартеру когда-то кидал

блин, это я твой ник с другим путаю всевремя, сори

biggrin.gif Да ниче, лучше с задачкей помоги wink.gif

Спустя 2 минуты, 39 секунд (26.02.2009 - 21:32) kich написал(а):
Цитата (Viking @ 26.02.2009 - 22:29)
скоро будешь меня консультировать =)

Хорошо, проконсультирую, только смотря о чем, а то я по профессии налоговый консультант;)

Спустя 34 секунды (26.02.2009 - 21:32) Viking написал(а):
дык в тег FILE ид для каждого добавь, как bret сказал, и по идам их и показывай
хотя циклом перебирать все данные как-то не особо нравится, но на счет надежности сортировки просто данных в доме я сомневаюсь...

Спустя 18 минут, 1 секунда (26.02.2009 - 21:50) kich написал(а):
Цитата (kich @ 26.02.2009 - 22:24)
Цитата (bret @ 26.02.2009 - 22:16)
толком эту штуку не ковырял, тебе надо сначала дать каждому файлу уникальный идентификатор, а затем юзать код что-то вроде
PHP
$basename='base.xml';
$doc = new DomDocument();
$doc = DOMDocument::load($basename);
$params = $doc->getElementsByTagName("FILE");
foreach ($params as $param)
{
 if($param->get_attribute('id')==$_GET['st'])
 {
  $nameAdr=iconv("UTF-8", "WINDOWS-1251",$param->attributes->getNamedItem("name")->nodeValue);
  ...
  $kolobok= "<p><b><a href=\"../articles/artic/$nameAdr\">$title</a></b><br />$comment<br /><b style=\"font-size:10px;color:#999\">$date&nbsp;[Просмотров: $account]</b></p>";
  break;
 }
}
print(
$kolobok);
// вставить paginator

А индификатор какому тегу присваивать?

такой способ не работает

Спустя 22 минуты, 48 секунд (26.02.2009 - 22:13) bret написал(а):
Лан, тогда даю алгоритм
- выдать каждому <FILE> аттрибут с персональным id
- слушать GET(id)
- получить все элементы FILE
- найти элемент, у которого id совпадает GET(id)
- записать все дочерние элементы найденного FILE в колобка
- вывести на страницу колобка
- вывести на страницу пагинатор

Спустя 3 минуты, 33 секунды (26.02.2009 - 22:17) kich написал(а):
Цитата (bret @ 26.02.2009 - 23:13)
Лан, тогда даю алгоритм
- выдать каждому <FILE> аттрибут с персональным id
- слушать GET(id)
- получить все элементы FILE
- найти элемент, у которого id совпадает GET(id)
- записать все дочерние элементы найденного FILE в колобка
- вывести на страницу колобка
- вывести на страницу пагинатор

ща попробую


_____________
Быстрый ответ:

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