Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    XML & PHP..Inserire in cima nuovo nodo

    Ciao!
    Sto cercando di capire come fare ad inserire i nuovi dati che devono andar ein un XML in cima ad esso, ma non riesco col metodo insertBefore..
    Mi potete dare una mano?

    il codice che sto utilizzando è
    Codice PHP:
    <?php

    //da un form php i dati vengono riportati in questo php
    if (isset($_POST['submit']))
    {

    $xml simplexml_load_file("articles.xml");

    $nuovoarticolo $xml->addChild('article'); 
    $titolo $nuovoUtente->addChild('titolo'$_POST['titolo']); 
    $testo $nuovoUtente->addChild('testo'$_POST['testo']); 


    echo 
    "

    Hai appena inserito questo titolo</p>"
    $_POST['titolo']; //stampa il nuovo elemento creato
    echo "

    Hai appena inserito questo testo</p>"
    $_POST['testo']; //stampa il nuovo elemento creato
    //sovrascrive il vecchio file con i nuovi dati
    $f fopen("articles.xml""w");
    fwrite($f,  $xml->asXML());
    fclose($f);
    }
    ?>
    il file XML che vado a modificare è questo:
    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <articles>
        <article>
            <titolo>Articolo numero 1</titolo>
            <testo>Testo articolo numero 1</testo>
        </article>
        <article>
            <titolo>Articolo numero 2</titolo>
            <testo>Testo articolo numero 2</testo>
        </article>
        <article>
            <titolo>Articolo numero 3</titolo>
            <testo>Testo articolo numero 3</testo>
        </article>
    </articles>
    a me interessa mettere il nuovo articolo in cima, quindi subito dopo <articles>

  2. #2
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Scusa perchè vorresti mettere al primo nodo l'ultimo articolo?

  3. #3
    Non credo tu posso riordinare in maniera semplice un XML anche perchè la cosa effettivamente non avrebbe molto senso.
    Come alternativa puoi crearne uno nuovo che poi prenderà il posto di quello vecchio. Ho buttato giù un po' di codice dal quale puoi prendere spunto:

    Codice PHP:
    <?php
    $xmlstr 
    '
    <articles>
        <article>
            <titolo>Articolo numero 1</titolo>
            <testo>Testo articolo numero 1</testo>
        </article>
        <article>
            <titolo>Articolo numero 2</titolo>
            <testo>Testo articolo numero 2</testo>
        </article>
        <article>
            <titolo>Articolo numero 3</titolo>
            <testo>Testo articolo numero 3</testo>
        </article>
    </articles>
    '
    ;

    $xml simplexml_load_string($xmlstr);

    try {
        
    $nXml = new SimpleXMLElement("<articles></articles>");

        
    $nuovoarticolo $nXml->addChild('article'); 
        
    $titolo $nuovoarticolo->addChild('titolo'"Nuovo articolo"); 
        
    $testo $nuovoarticolo->addChild('testo'"Testo nuovo articolo"); 
        
        foreach(
    $xml as $article) {
            
    $target dom_import_simplexml($nXml);
            
    $source dom_import_simplexml($article);
            
    $target->appendChild($target->ownerDocument->importNode($sourcetrue));
        }

        echo 
    $nXml->asXML();
    } catch (
    Exception $e) {

    ?>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    vedi se ho capito bene...creo un nuovo xml con i dati nuovi e poi vado ad aggiungere il vecchio giusto?il codice che hai postato fa questo?

  5. #5
    Originariamente inviato da totocamen88
    vedi se ho capito bene...creo un nuovo xml con i dati nuovi e poi vado ad aggiungere il vecchio giusto?il codice che hai postato fa questo?
    Si.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Originariamente inviato da satifal
    Si.
    grazie mille...
    posto il codice che ho usato, nel caso può essere utile a qualcuno...
    ho una pagina html dove inserisco i testi delle news (è collegato con uno script javascript che mi genera il calendario per la data...

    codice:
    <form action="news/news.php" method="POST">
      
    
    </p>
      <form action="#">
    Data: <input type="text" name="data" id="sel3" size="30"
    ><input type="reset" value=" ... "
    onclick="return showCalendar('sel3', '%d/%m/%Y');">
      
      
    
    Inserisci il titolo della news
        <textarea name="titolo"></textarea>
      </p>
    
    
    Inserisci il testo della news
      <textarea name="testo"></textarea>
      </p>
    
    
    
      <input type="submit" name="submit" id="Invia nuova news">
      <input name="Invia nuova news2" type="reset" id="Invia nuova news2" value="Reset" />
    </p>
    </form>


    Codice PHP:
    <?php

    //da un form php i dati vengono riportati in questo php
    if (isset($_POST['submit']))
    {

    $xml simplexml_load_file("articles.xml");

    try {
        
    $nXml = new SimpleXMLElement("<articles></articles>");


    $nuovoarticolo $nXml->addChild('article'); 
        
    $testo $nuovoarticolo->addChild('data'$_POST['data']); 
    $titolo $nuovoarticolo->addChild('titolo'$_POST['titolo']); 
        
    $testo $nuovoarticolo->addChild('testo'$_POST['testo']); 

        
        foreach(
    $xml as $article) {
            
    $target dom_import_simplexml($nXml);
            
    $source dom_import_simplexml($article);
            
    $target->appendChild($target->ownerDocument->importNode($sourcetrue));
        }


    echo 
    "

    Hai inserito questa data</p>"
    $_POST['data']; //stampa il nuovo elemento creato 
    echo "

    Hai inserito questo titolo</p>"
    $_POST['titolo']; //stampa il nuovo elemento creato
    echo "

    Hai inserito questo testo</p>"
    $_POST['testo']; //stampa il nuovo elemento creato 

    $nXml->asXML("articles.xml");
    } catch (
    Exception $e) {

    }
    ?>
    e mi ritrovo i dati inseriti nell'xml...

    ora mi manca soltanto potre gestire la cancellazione delle news su richiesta...

  7. #7
    Cioè vuoi usare un file xml come database?

    Ma perchè? Perchèèèèèèèèèèèèèèèèèè
    Quando avrai 5000 articoli ti voglio vedere a gestire l'archivio...

  8. #8
    perche le news non saranno molte....perciò son andato su questo metodo...altrimenti lo so che conviene di piu usare il db...;-)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.