Вывод php в xml

Тема в разделе "Как сделать...", создана пользователем SERIAL, 13 мар 2012.

  1. SERIAL

    SERIAL Админ

    Регистр.:
    5 апр 2006
    Сообщения:
    566
    Симпатии:
    144
    Ребят помогите! Вопрос!
    Надо записать те данные которые выводятся в index.php в файл index.xml . Все просто и тупо! Но сделать никак не получается!

    Заранее благодарен!
     
  2. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.627
    Симпатии:
    1.330
    Сначала открываем файл для записи
    $fp = fopen("index.xml", "w");
    Затем заменяем все echo на
    fputs($fp, 'QWEQWEQ');
    где QWEQWEQ это все то что выводилось через echo
    примерно так.
    Но я так понимаю что у xml должна быть структура какая то
    У каждого свои варианты решения записи, так что не критикуйте)

    Вот, в index.php
    вставляем $fp = fopen("index.xml", "w");
    а потом вместо
    PHP:
        echo "<td>".$res['name']."</td>";
        echo 
    "<td>".$res['age']."</td>";
        echo 
    "<td>".$res['email']."</td>";    
    Пишем
    PHP:
    fputs($fp$res['name'].';');
        
    fputs($fp$res['age'].';');
        
    fputs($fp$res['email'].";\r\n");
    В итоге получим на каждую строчку по 1 юзеру я так понял в виде
    Имя;Возраст;Мыло
    Имя;Возраст;Мыло
    Имя;Возраст;Мыло
     
    SERIAL нравится это.
  3. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    PHP:
        $usersArr = array(
            array(
    'name'=>'user1''age'=>25'email'=>'email1@email'),
            array(
    'name'=>'user2''age'=>22'email'=>'qwesd@email'),
            array(
    'name'=>'user3''age'=>21'email'=>'123we@email'),
            array(
    'name'=>'user4''age'=>24'email'=>'email4@email'),
        );
     
        
    $xml = new DomDocument('1.0','utf-8');
        
    $xml->formatOutput true;
     
        
    $users  $xml->appendChild($xml->createElement('users'));
        
    $xml->appendChild$users );
       
        foreach(
    $usersArr as $u)
        {
            
    $user $xml->appendChild($xml->createElement('user'));
           
            
    $name $xml->createElement"name" );
            
    $name->appendChild$xml->createTextNode$u['name'] ) );
            
    $user->appendChild$name );
     
            
    $age $xml->createElement"age" );
            
    $age->appendChild$xml->createTextNode$u['age'] ) );
            
    $user->appendChild$age );
     
            
    $email $xml->createElement"email" );
            
    $email->appendChild$xml->createTextNode$u['email'] ) );
            
    $user->appendChild$email );
     
            
    $users->appendChild$user );
        }
     
        
    $xml->save('result.xml');

    подставь ток вместо масива свою выборку из БД
     
    SERIAL нравится это.
  4. SERIAL

    SERIAL Админ

    Регистр.:
    5 апр 2006
    Сообщения:
    566
    Симпатии:
    144


    Чего-то нечего не выводит, index.php такой
    PHP:
    <?php
     
    $fp 
    fopen("index.xml""w");
     
    echo 
    "<table width='80%' border=0>";
     
    echo 
    "<tr bgcolor='#CCCCCC'>";
    echo 
    "<td>Name</td>";
    echo 
    "<td>Age</td>";
    echo 
    "<td>Email</td>";
    echo 
    "<td>Update</td>";
    echo 
    "</tr>";
     
    while(
    $res=mysql_fetch_array($result)){
       
        echo 
    "<tr>";
    fputs($fp$res['name'].';');
        
    fputs($fp$res['age'].';');
        
    fputs($fp$res['email'].";\r\n");
        echo 
    "<td><a href=\"edit.php?id=$res[id]\">Edit</a> | <a href=\"delete.php?id=$res[id]\">Delete</a></td>";
       
    }
    echo 
    "</table>";
    ?>
    <-------------- добавлено через 59 сек. -------------->
    тоже не работает. Можно с примером? Или уже готовым скриптом плиз)
     
  5. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    так я и и бросил "готовый" скрипт
    его нужно лишь присобачить к БД

    скрипт создает файл 'result.xml' в который собсно и пишет XML-документ ( структуру взял наугад, так как хз какая нужна )

    а что не работает то? или может предполагалось что-то отличное от того что сделал я ?
     
    SERIAL нравится это.
  6. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.627
    Симпатии:
    1.330
    Все верно, потому что база пустая))
    Жмем добавить http://testq/add.html
    И набиваем данные.
    Затем поставь оригинальный index.php
    и посмотри выведется ли хоть одна запись из бд. !!!Таблица в бд должна называться users
    Если выведется то напиши в index.php
    PHP:
    <?php
    include_once("config.php");
    $result=mysql_query("SELECT * FROM signal_database ORDER BY id DESC");
    ?>
    <html>
    <title>Homepage</title>
    <body>
    <a href="add.html">Add New Data</a><br/><br/>
    <?php
    $fp 
    fopen("index.xml""w");
    fputs($fp"<?xml version='1.0' encoding='UTF-8' ?>\r\n<users>\r\n");
    while(
    $res=mysql_fetch_array($result)){
    fputs($fp"<useritem>\r\n");
    fputs($fp'<username>'.$res['name']."</username>\r\n");
    fputs($fp'<userage>'.$res['age']."</userage>\r\n");
    fputs($fp'<useremail>'.$res['email']."</useremail>\r\n");
    fputs($fp"</useritem>\r\n");
    }
    fputs($fp"</users>\r\n");
    ?>
    </body>
    </html>
     
    Я только что все это проделал
    Вот что на выходе получил:
    Код:
    <?xml version='1.0' encoding='UTF-8' ?>
    <users>
    <useritem>
    <username>qwe 2</username>
    <userage>123</userage>
    <useremail>qwe2@qwe.com</useremail>
    </useritem>
    <useritem>
    <username>qwe 1</username>
    <userage>123</userage>
    <useremail>qwe1@qwe.com</useremail>
    </useritem>
    </users>
     
    SERIAL нравится это.
  7. SERIAL

    SERIAL Админ

    Регистр.:
    5 апр 2006
    Сообщения:
    566
    Симпатии:
    144
    Огромное спасибо! Работает! :))) Плюсик)
     
  8. d1mka

    d1mka Постоялец

    Регистр.:
    20 мар 2007
    Сообщения:
    92
    Симпатии:
    23
    Без, обид, но так не будет работать, точнее ни один нормальный сервис загрузки xml не прочитает Ваш файл, сам недавно столкнулся с этой проблемой, сейчас все почти заголовок проверяют, поэтому в начале строку нужно
    header("Content-type: text/xml; charset=UTF-8");