• User Attivo

    Esportazione di dati in XML

    Ragazzi, per necessità devo generare un file xml con php secondo questo modello

    
    <?xml version="1.0" encoding="utf-8"?>
    <immagini>
       <immagine indirizzo="1.jpg" infos="Questa è la prima immagine"/>
       <immagine indirizzo="2.jpg" infos="Questa è la seconda immagine"/>
       <immagine indirizzo="3.jpg" infos="Questa è la terza immagine"/>
    </immagini>
    

    In pratica lo script che ho in mente mi estrae dal database gli avatar degli utenti che vengono immessi in un ciclo while che dovrebbe ricreare il file xml di esempio, ma visto che è la prima volta che utilizzo le estensioni DOM non riesco a creare il nodo 😄

    Ecco quello che ho fatto fino ad ora

    [PHP]<?php
    include('config.php');
    function get_user_avatar($avatar, $avatar_type, $user_posts)
    {
    if (empty($avatar) || !$avatar_type)
    {
    return '';
    }
    $avatar_img = '';
    switch ($avatar_type)
    {
    case 1:
    $avatar_img = "forum/download/file.php?avatar=";
    break;
    case 3:
    $avatar_img = "forum/images/avatars/gallery" . '/';
    break;
    }
    $avatar_img .= $avatar;
    return '<immagine indirizzo="' . $avatar_img . '" infos="' . $user_posts . '" />';
    }
    $sql = "SELECT user_id, username, user_posts, user_colour, user_avatar, user_avatar_type, user_avatar_width, user_avatar_height
    FROM phpbb3_users
    ORDER BY user_posts DESC
    LIMIT 0, 10" ;
    if($result = mysql_query($sql))
    {
    $dom = new DOMDocument('1.0', 'utf-8');
    $element = $dom->add_root('immagini');
    while($row = mysql_fetch_array($sql))
    {
    $thumb = get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_posts']);
    }

    $dom->save("result.xml");
    }
    ?>[/PHP]
    Mi date una mano ?


  • User Attivo

    Perchè vuoi usare DOM?

    Ti basta ricreare una stringa con l'XML e poi salvare il file (es. file_put_contents()), molto più facile e veloce.


  • User Attivo

    mica ti ho capito.. mi puoi fare un esempio volante :bho:


  • User Attivo

    Guarda questo codice:

    [PHP]<?php

    $images = array();
    $images[] = array('address' => '1.jpg', 'info' => 'Questa è la prima immagine');
    $images[] = array('address' => '2.jpg', 'info' => 'Questa è la seconda immagine');
    $images[] = array('address' => '3.jpg', 'info' => 'Questa è la terza immagine');

    $xml = '<?xml version="1.0" encoding="utf-8"?' . ">\r\n";
    $xml .= "<immagini>\r\n";
    foreach($images as $image) {
    $xml .='<immagine indirizzo="' . $image['address'] . '" infos="' . $image['info'] . '" />' . "\r\n";
    }
    $xml .= '</immagini>';

    file_put_contents('results.xml', $xml);

    ?>[/PHP]


  • User Attivo

    perfetto, grazie per avermi fatto conoscere questa funzione 🙂