Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-06-2007, 17:41   #1 (permalink)
Neuer User
 
Benutzerbild von destroy90210
 
Registriert seit: Feb 2002
Ort: wien
Beiträge: 458
absätze gehn verloren beim speicehrn ins xml

hi,

ich habe ein einfaches news script das schreiben/editieren kann, wenn ich eine news schreibe nimmt er super die absätze mit, wenn ich nun die news editiere zeigt er die news genau richtig mit allen absätzen an... wenn ich nun aber die news speichere gehn die absätze verloren, was ich aber nicht verstehe im textfeld sind sie ja drinnen warum gehen die dann verloren?? neue absätze die ich mache nimmt er super mit, wenn ich die news wieder editeore und sie nicht neu sätze gehn sie ebenfalls verloren...

hoffe ihr könnt mir helfen

hier mein script

PHP-Code:
//////////////////////////////////////////////
/////neue news ins array schreiben
function newNews() {
    news_headline = _root.content.writeNews.new_news_headline_txt.text;
    news_teaser = _root.content.writeNews.new_news_teaser_txt.text;
    news_message = _root.content.writeNews.new_news_message_txt.text;
    var today_date:Date = new Date();
    var news_date:String = (today_date.getDate()+"."+(today_date.getMonth()+1)+"."+today_date.getFullYear());
    var news:Array = Array({news_headline:news_headline, news_date:news_date, news_message:news_message, news_teaser:news_teaser});
    newsArray.push(news);
    for (i in newsArray) {
        trace(newsArray[i][0].news_headline);
    }
    _root.saveNews();
}
//////////////////////////////////////////
//////////////news speichern
function saveNews(){
    trace(newsArray[i][0].news_teaser);
    var xml:String;
    xml = "<?xml version="1.0\" encoding=\"iso-8859-1\"?>\n";
    
xml += "<root>\n";
    for (var 
i:Number 0i<newsArray.lengthi++) {
        
xml += "<news headline=\""+newsArray[i][0].news_headline+"\" "+"date=\""+newsArray[i][0].news_date+"\">\n";
        
xml += "<teaser>"+newsArray[i][0].news_teaser+"</teaser>\n";
        
xml += "<message>"+newsArray[i][0].news_message+"</message>\n";
        
xml += "</news>\n";
    }
    
xml += "</root>\n";
    
saveDataa.xml xml;
    
trace(saveDataa.xml);
    
//_root.debugging.text = "DEBUG:"+saveData.xml+"\n";
    
saveDataa.sendAndLoad("writeXML.php",saveDataa,"POST");
}
//news_xml.load("news.xml?"+Math.random());
news_xml.load("news.xml");
mfg,
destroy90210

Geändert von destroy90210 (11-06-2007 um 17:44 Uhr)
destroy90210 ist offline   Mit Zitat antworten
Alt 11-06-2007, 17:53   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.134
1. Schaue dir mal die Klasse XMLNode an mit ihre Funktion appendChild().

2. Ich würde sagen es gibt in XML keine Absätze. Nimm die \n und formatiere die Textknoten beim auslesen der XML immer wieder neu.

Ps: ich will dir keine zusätzliche Arbeit machen dir aber ans Herz legen, dich etwas eingehender mit XML zu befassen. Du kannst damit echt viel machen... dein Ansatz ist aber definitiv kein guter Ansatz.
Omega Psi ist offline   Mit Zitat antworten
Alt 11-06-2007, 18:08   #3 (permalink)
Neuer User
 
Benutzerbild von destroy90210
 
Registriert seit: Feb 2002
Ort: wien
Beiträge: 458
und wie soll ich das genau machen ??
bzw ich versteh nicht ganz wie das ist mit dem absatz im xml wenn es keien gibt warum macht er sie beim ersten mal ?? nur beim ersten auslesen und erneuten abspeichern gehn sie verloren...

aber wegen dem neu formatieren wie kann ich das genau machen ?? weil wenn im xml kein absatz gespeichert ist wie kann ich es dann erneut mit \n formatieren

glaub steh grade bisschen auf der leitung
destroy90210 ist offline   Mit Zitat antworten
Alt 11-06-2007, 18:38   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.134
Hier mal ein Beispiel:
ActionScript:
  1. var document:XML = new XML();
  2. var xmlNodes:Array = new Array();
  3. var textNodes:Array = new Array();
  4. var root:XMLNode = document.createElement("root");
  5. this.document.appendChild(root);
  6. for (var i:Number = 0; i<3; i++) {
  7.     this.xmlNodes[i] = this.document.createElement("news");
  8.     this.xmlNodes[i].attributes["id"] = i;
  9.     this.textNodes[i] = this.document.createTextNode("Ich bin Knoten: "+i);
  10.     this.xmlNodes[i].appendChild(this.textNodes[i]);
  11.     root.appendChild(this.xmlNodes[i]);
  12. }
  13.  
  14. trace("Ausgabe des dynamisch erstellten XML:\n"+this.root);
  15. trace("Formatierung der XML-TextKnoten");
  16. var newsString:String = "";
  17. var formattedNewsString:String = "";
  18. for (var i:Number = 0; i<root.childNodes.length; i++) {
  19.     newsString+=root.childNodes[i].firstChild.nodeValue;
  20.     formattedNewsString += root.childNodes[i].firstChild.nodeValue+"\n";
  21. }
  22. trace(" - Unformatierter Text: \n"+newsString);
  23. trace(" - Formatierter Text: \n"+formattedNewsString)
Omega Psi ist offline   Mit Zitat antworten
Alt 11-06-2007, 18:39   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.134
Und noch eine fla zu rumspielen:
Angehängte Dateien
Dateityp: zip XML.zip (5,1 KB, 4x aufgerufen)
Omega Psi ist offline   Mit Zitat antworten
Alt 11-06-2007, 20:55   #6 (permalink)
Neuer User
 
Benutzerbild von destroy90210
 
Registriert seit: Feb 2002
Ort: wien
Beiträge: 458
hi,

ich möcht mich mal sehr herzlichst bei dir bedanken für deine hilfe

habs gleich mal versucht auf meines anzuwenden, weil ich dachte ich habs verstanden, aber anscheinend doch nicht... ich bekomme leider beim tracen nur ein
PHP-Code:
+++++++++++<root /> 
heraus

hier mein code, hoffe du kannst mir sagen was ich da falsch gemacht habe oder wer anderer

PHP-Code:
//////////////////////////////////////////
//////////////news speichern/////////////
function saveNews():Void {
    var 
document:XML = new XML();
    var 
newsNode:XMLNode;
    var 
teaserNode:XMLNode;
    var 
messageNode:XMLNode;
    var 
textTeaserNode:XMLNode;
    var 
textMessageNode:XMLNode;
    var 
firstNode:XMLNode document.createElement("root");
    for (var 
i:Number 0i<newsArray.lengthi++) {
        
//node news teaser message erstellen
        
this.newsNode[i] = this.document.createElement("news");
        
this.teaserNode[i] = this.document.createElement("teaser");
        
this.messageNode[i] = this.document.createElement("message");

        
//attributte auf newsNode speichern
        
this.newsNode[i].attributes["headline"] = newsArray[i][0].news_headline;
        
this.newsNode[i].attributes["date"] = newsArray[i][0].news_date;

        
//texte speichern in einem node und im zugehörigen node speichern
        
this.textTeaserNode[i] = document.createTextNode(newsArray[i][0].news_teaser);
        
this.textMessageNode[i] = document.createTextNode(newsArray[i][0].news_message);
        
this.teaserNode[i].appendChild(this.textTeaserNode[i]);
        
this.messageNode[i].appendChild(this.textMessageNode[i]);

        
//message und teaserNode in news node schreiben
        
this.newsNode[i].appendChild(this.teaserNode[i]);
        
this.newsNode[i].appendChild(this.messageNode[i]);

        
//newsNode in root node schreiben
        
firstNode.appendChild(this.newsNode[i]);
    }
    
saveDataa.sendXml firstNode;
    
trace("+++++++++++"+firstNode);
    
saveDataa.sendAndLoad("writeXML.php",saveDataa,"POST");


mfg,
destroy90210
destroy90210 ist offline   Mit Zitat antworten
Alt 12-06-2007, 08:41   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.134
Hm, ja wo fange ich an. Da waren einige Fehler drinn. Konsequent Arrays und XMLNodes vertauscht... Ich habe im Anhang eine vollständige fla angehangen, in der der ganze Code drin ist, hier die wesendliche Funktion kurz erklärt:
ActionScript:
  1. function saveAsXML(array:Array, nodeName:String, xml:XML):Void {
  2.     var nodes:Array = new Array();
  3.     var textNodes:Array = new Array();
  4.     for (var i:Number = 0; i<array.length; i++) {
  5.         nodes[i] = xml.createElement(nodeName);
  6.         xml.firstChild.appendChild(nodes[i]);
  7.         nodes[i].attributes["id"] = i;
  8.         textNodes[i] = xml.createTextNode(array[i]);
  9.         nodes[i].appendChild(textNodes[i]);
  10.     }
  11. }
Die Funktion hat 3 übergabe Parameter:
  1. array:Array - enthält die zu speichernden Strings.
  2. nodeName:String - der Name der Nodes, in die die Nachrichten als Textknoten speichern.
  3. xml:XML - Das XML-Objekt, das verwendet wird.
Ich erzeugt zwei lokale Arrays. Die brauche ich, um auch später noch auf die frisch erzeugtem Knoten zugreifen zu können. Das XML-Objekt erzeugt alle Knoten (die in den jeweiligen Arrays gespeichert werden: Element-Knoten im Array nodes und Text-Knoten im Array textNodes). Diese kann ich dann so zusammenhängen, wie ich es benötige.
Angehängte Dateien
Dateityp: zip SimpleDomExample.zip (4,9 KB, 4x aufgerufen)
Omega Psi ist offline   Mit Zitat antworten
Alt 12-06-2007, 09:38   #8 (permalink)
Neuer User
 
Benutzerbild von destroy90210
 
Registriert seit: Feb 2002
Ort: wien
Beiträge: 458
aso jetzt verstehe ich, weil ich habe da bissl in die flashhilfe gschaut und da war nix mit array,

ich dachte
PHP-Code:
nodes[i] = xml.createElement(nodeName); 
so heisst der konten schon wirkloch z.B.: node3, aber ich speichere das alle schön brav ins array rein und holle mir dann aus node3 erst den knoten raus

und hier lese ich es wieder ausm array aus und speichere das attribut darauf
PHP-Code:
nodes[i].attributes["id"] = i
jetzt ist mir so einiges klar danke für deine super hilfe
destroy90210 ist offline   Mit Zitat antworten
Alt 12-06-2007, 10:05   #9 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.134
Ne, es ist nicht ganz so. Der in nodeName, den ich übergebe hat ja keine Nummer. Ich benutze das 'i' für zwei Dinge:
  1. Die Arrays zu durchlaufen
  2. Die id's zu vergeben
Warum benutze ich:
ActionScript:
  1. nodes[i] = xml.createElement(nodeName);
und nicht
ActionScript:
  1. nodes[i] = xml.createElement(nodeName+i);
, also die Variante, die angegeben hast? Wenn du die XML wieder parst, und nur News haben willst, dann kannst du mit:
ActionScript:
  1. if (node.nodeName == "news") { /* ... */}
alle News einzeln raussuchen. Wenn alle Knoten verschiede Namen haben, geht das nicht, deswegen die Vergabe der id's. Das ganze ist natürlich nur ein Beispiel, ich hoffe aber, es wurde dir einiges klarer.
Omega Psi ist offline   Mit Zitat antworten
Alt 12-06-2007, 22:52   #10 (permalink)
Neuer User
 
Benutzerbild von destroy90210
 
Registriert seit: Feb 2002
Ort: wien
Beiträge: 458
danke habe jetzt glaube alles verstanden und funktioniert super alles

und auf das eigentliche problem zurück zu kommen da die absätze verloren gehn da muss man absetze die ausm xml kommen mit einem <br> ersetzen dann geht nix verloren

PHP-Code:
var replaced_news_message:String news_message.split("\r").join("<br>"); 
danke nochmal
destroy90210 ist offline   Mit Zitat antworten
Alt 13-06-2007, 07:12   #11 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.134
Eine letzte Anmerkung: benutze <br /> anstatt <br>. Sonst ist alles gut
Omega Psi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele