ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

XML - Новостная лента (help за символические WMZ)
  #1  
Старый 22.12.2008, 03:10
Lionis
Познающий
Регистрация: 13.12.2008
Сообщений: 75
Провел на форуме:
128428

Репутация: 20
Lightbulb XML - Новостная лента (help за символические WMZ)

Мне нужен скрипт - новостное ленты работающей не с MySQL а с XML .
Скрипт вида :
1.Главная страница
[отображение новостей : название новости , кратное описание ]

2.Открытая новость
[Полное описание + фото,переход между новостями]

3.Админ панель
[отображение загруженных новостей - (удаление/редактирование)
Добавление новости:
Название новости
Краткое описание
Полное описание
Добавление изображения]

4.Редактирование
[отображение загруженных новостей - (удаление/редактирование)
Добавление новости:
Редактирование названия новости
Редактирование краткого описания
Редактирование полного описания
Выбор нового загружаемого изображения]


_______________________________________________

У кого есть скрипт подобного рода , работающий с XML
или же способен создать.
Буду рад каждому ответу .
спасибо .

Последний раз редактировалось Lionis; 22.12.2008 в 03:42..
 
Ответить с цитированием

  #2  
Старый 22.12.2008, 03:22
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Тут почитай:

http://www.linuxcenter.ru/lib/articles/programming/xml_news.phtml

http://www.realcoding.net/article/view/4182

Последний раз редактировалось Pashkela; 22.12.2008 в 03:36..
 
Ответить с цитированием

  #3  
Старый 22.12.2008, 03:32
Lionis
Познающий
Регистрация: 13.12.2008
Сообщений: 75
Провел на форуме:
128428

Репутация: 20
Arrow

Цитата:
Сообщение от Pashkela  
Тут почитай:

http://www.linuxcenter.ru/lib/articles/programming/xml_news.phtml
___
спасибо большое - но там слишком просто .
Надо именно под мои требования :
Кто поможет - в знак благодарности дам 3 WMZ - это все что есть .
 
Ответить с цитированием

  #4  
Старый 22.12.2008, 15:30
ss88
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме:
298300

Репутация: 128
Отправить сообщение для ss88 с помощью ICQ
По умолчанию

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

  #5  
Старый 22.12.2008, 17:29
FeoЩту
Познающий
Регистрация: 13.11.2008
Сообщений: 31
Провел на форуме:
70426

Репутация: 14
По умолчанию

Цитата:
Сообщение от ss88  
Если хочешь, могу сделать несложную структуру документа и класс, который будет располагать средствами обработки... Но без XSLT
зачем тут XSLT??
по сабжу - http://ua2.php.net/manual/ru/book.simplexml.php
 
Ответить с цитированием

  #6  
Старый 22.12.2008, 18:41
ss88
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме:
298300

Репутация: 128
Отправить сообщение для ss88 с помощью ICQ
По умолчанию

Потому что в примерах, которые привел Pashkella юзается еще и XSLT
А SimpleXML я обычно не пользуюсь, пусть он простой и быстрый, но не совсем универсальный, а юзаю DOM.
 
Ответить с цитированием

  #7  
Старый 22.12.2008, 19:45
-Hormold-
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
Провел на форуме:
3250478

Репутация: 999


Отправить сообщение для -Hormold- с помощью ICQ
По умолчанию

Для редактирования тебе их нужно заносить в файл или mysql.
Напиши в icq. Всё расскажу, возможно сделаю!
 
Ответить с цитированием

  #8  
Старый 22.12.2008, 20:46
ss88
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме:
298300

Репутация: 128
Отправить сообщение для ss88 с помощью ICQ
По умолчанию

PHP код:
<?php
/*****************************************************************************
 * класс для работы с новостной лентой. автор - ss88                         *
 ***************************************************************************** 
 */
class newsList
{
    protected 
$newsList,//массив со всеми выбранными новостями 
                
$xDoc,//xml-документ
                
$newsNodeList,
                
$newsCount,//количество новостей в базе
                
$newsPerPage,//кол-во новостей на страницу
                
$fileName,//имя файла базы
                
$maxId;//максимальный из присутствующих идентификаторов
    //конструктор            
    
function __construct($filename,$newsPerPage)
    {
        if(
file_exists($filename))
            
$this->xDoc=new DOMDocument();
        else 
            echo 
"Ошибка открытия файла";
            
        
$this->newsPerPage=$newsPerPage;
        
$this->fileName=$filename;
        
//открыть базу
        
$this->xDoc->load($this->fileName);
        
$this->xDoc->formatOutput=TRUE;
        
//получить корневую часть
        
$this->newsNodeList=$this->xDoc->getElementsByTagName("newsItem");    
        
//чтение и инициализация
        
$this->initRead();
    }
    
    
//получить весь список новостей
    
function getAllNews()
    {
        return 
$this->newsList;
    }
    
    
//получить новость по идентификатору
    
function getById($id)
    {
        if(
$this->newsCount<1)
            return 
NULL;
        else 
        {
            foreach(
$this->newsList as $oneItem)
                if(
$oneItem['id']==$id)
                    return 
$oneItem;
            return 
NULL;
        }
    }
    
    
//получить страницу
    
function getPage($pageNum)
    {
        if((
$this->newsCount $this->newsPerPage*($pageNum-1))>0)
        {
            
$arPage=array();
            for(
$i=$this->newsPerPage*($pageNum-1);isset($this->newsList[$i])&&($i<$this->newsPerPage*($pageNum-1)+$this->newsPerPage);$i++)
                
array_push($arPage,$this->newsList[$i]);
            return 
$arPage;
        }
        else 
            return 
NULL;
    }
    
    
//редактировать новость
    
function editItem($id,$bind)
    {
        if(
$item=$this->getById($id))
        {
            for(
$i=0;$i<$this->newsNodeList->length;$i++)
                if((
$this->newsNodeList->item($i)->childNodes->item(0)->nodeValue)==$id)
                {
                    
$oldNode=$this->newsNodeList->item($i);
                    if(
$i!=$this->newsNodeList->length-1)
                        
$nextNode=$this->newsNodeList->item($i);
                    break;
                }
            
$newNode=$this->makeNewNode($bind,$id);
            
            
$bigNode=$this->xDoc->getElementsByTagName("newsList")->item(0);
            
$bigNode->replaceChild($newNode,$oldNode);
            
            
$this->xDoc->save($this->fileName);
            
$this->initRead();
            
            return 
$this->getById($id);
        }
        else
            return 
NULL;
    }
    
    
//добавить новость
    
function addItem($bind)
    {
        if(!
is_array($bind))
            return 
NULL;
        else 
        {
            
$newNode=$this->makeNewNode($bind);
            
            
$bigNode=$this->xDoc->getElementsByTagName("newsList")->item(0);
            
$bigNode->appendChild($newNode);
            
            
$this->xDoc->save($this->fileName);
            
$this->initRead();
            
            return 
$this->getById($this->maxId);
        }
    }
    
    
//удалить новость
    
function removeItem($id)
    {
        if(
$this->getById($id))
        {
            for(
$i=0;$i<$this->newsNodeList->length;$i++)
                if((
$this->newsNodeList->item($i)->childNodes->item(0)->nodeValue)==$id)
                {
                    
$delNode=$this->newsNodeList->item($i);
                    break;
                }
            
$bigNode=$this->xDoc->getElementsByTagName("newsList")->item(0);
            
$bigNode->removeChild($delNode);
            
$this->xDoc->save($this->fileName);
        }
        else
            return 
FALSE;
    }
    
    
//сервисная защищенная функция для формирования nod'а
    
protected function makeNewNode($bind,$id=-1)
    {
            
$newNode=$this->xDoc->createElement("newsItem");
            
$newNode->appendChild($this->xDoc->createElement("id",($id==-1)?($this->maxId+1):$id));
            
$newNode->appendChild($this->xDoc->createElement("name",$bind['title']));
            
$newNode->appendChild($this->xDoc->createElement("shortDescription",$bind['description']));
            
$newNode->appendChild($this->xDoc->createElement("extDescription",$bind['extDescription']));
            
$newNode->appendChild($this->xDoc->createElement("pictureFile",$bind['picture']));
            
$newNode->appendChild($this->xDoc->createElement("date",$bind['date']));
            return 
$newNode;
    }
    
//защищенная ф-ция. чтение и инициализация, всего, что связано с новостями
    
protected function initRead()
    {
        
        
$this->newsList=array();
        if(!
$this->newsNodeList->length)
            return;
        else
        {
            
$this->maxId=-1;
            for(
$i=0$i<$this->newsNodeList->length;$i++)
            {
                
$xItem=$this->newsNodeList->item($i);
                if(
$this->maxId<$xItem->childNodes->item(0)->nodeValue)
                    
$this->maxId=$xItem->childNodes->item(0)->nodeValue;
                
$oneItem=array
                            (
                            
"id"=>$xItem->childNodes->item(0)->nodeValue,
                            
"title"=>$xItem->childNodes->item(1)->nodeValue,
                            
"description"=>$xItem->childNodes->item(2)->nodeValue,
                            
"extDescription"=>$xItem->childNodes->item(3)->nodeValue,
                            
"picture"=>$xItem->childNodes->item(4)->nodeValue,
                            
"date"=>$xItem->childNodes->item(5)->nodeValue
                            
);
                 
array_push($this->newsList,$oneItem);
            }
            
$this->newsCount=count($this->newsList);
        }
    }
}
?>
Вот такой вот примерчик работы с новостями без БД. Конечно, он сделан на скорую руку и оптимальностью не блещет, но пригоден для использования. Для оптимизации (если, например, разведется несколько тысяч новостей) можно для чтения файла использовать более шустрый, нежели DOM, интерфейся, благо, парочка таких альтернатив имеется + нужно уже будет вычитывать не всю базу, а кусками, потому что ресурсы сервера нихрена не резиновые.
xml
PHP код:
<?xml version="1.0"?>
<newsList>
    <newsItem><id>1</id><name>Edited Name Of First Item 666</name><shortDescription>
        short decription of the first item
        </shortDescription><extDescription>
        extended decription of the first item
        </extDescription><pictureFile>
        1.jpg
        </pictureFile><date>10.10.1666</date></newsItem>
    
    <newsItem><id>2</id><name>Edited Name</name><shortDescription>
        short decription of the SECOND item
        </shortDescription><extDescription>
        extended decription of the SECOND item
        </extDescription><pictureFile>
        2.jpg
        </pictureFile><date>10.11.1666</date></newsItem>
<newsItem><id>3</id><name>We wish to work well</name><shortDescription>
        short decription of the first item
        </shortDescription><extDescription>
        extended decription of the first item
        </extDescription><pictureFile>
        1.jpg
        </pictureFile><date>10.10.1666</date></newsItem>
</newsList>
Вот так выглядит сам файл с новостями
 
Ответить с цитированием

  #9  
Старый 22.12.2008, 20:58
fucker"ok
Познавший АНТИЧАТ
Регистрация: 21.11.2004
Сообщений: 1,137
Провел на форуме:
2487541

Репутация: 761


По умолчанию

http://pear.php.net/package/XML_Parser
ss88, красавчег, только можно было не изобретать квадратные колеса
 
Ответить с цитированием

  #10  
Старый 22.12.2008, 21:07
FeoЩту
Познающий
Регистрация: 13.11.2008
Сообщений: 31
Провел на форуме:
70426

Репутация: 14
По умолчанию

Цитата:
Сообщение от ss88  
Потому что в примерах, которые привел Pashkella юзается еще и XSLT
покажи где ты это увидел?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подборка сайтов по CSS, XML технологиям и Web2.0 решениям Trinux Избранное 8 06.12.2006 17:05
W3c выпустил обновлённые спецификации стандарта Xml TTN_ Мировые новости 0 21.08.2006 21:28
СОФТ ОБЗОР TROJ@N Soft - Windows 7 16.04.2006 12:28
xml и C# Halyva С/С++, C#, Delphi, .NET, Asm 3 29.03.2005 12:44



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ