Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-12-2005, 19:31   #1 (permalink)
o_0
 
Benutzerbild von DoTheSinWave
 
Registriert seit: Apr 2005
Ort: zuhause
Beiträge: 79
highscorelist mit xml und php - finde den Fehler nicht

Hi all!

Seit kurzem arbeite ich an einem Highscorelist-Script für mein Flashgame, das zuerst die XML-Datei ausliest, in ein Objekt schreibt, und von diesem Objekt wieder eine neue, sortierte, XML erstellt, mit dem neuen Highscore. Diese XML wird dann an ein PHP Script weitergegeben das dann die neue XML-Datei schreibt.

ActionScript:
PHP-Code:
stop();
var list:Array;
oldList = new XML();
oldList.ignoreWhite = true;
oldList.onLoad = function(success) {
    if (success) {
        leseXML(this);
    } else {
        trace("Fehler beim Laden der Datei");
    }
};
function submit() {
    oldList.load("highscorelist.xml");
}
function leseXML(xml) {
    list = new Array();
    var laenge = xml.firstChild.childNodes.length;
    var i = 0;
    while (i<laenge) {
        var name = xml.firstChild.childNodes[i].attributes.name;
        var score = xml.firstChild.childNodes[i].attributes.score;
        var email = xml.firstChild.childNodes[i].attributes.email;
        list.push({name:name, email:email, score:Number(score)});
        i++;
    }
    fuegeDatenhinzu(list);
}
function fuegeDatenhinzu(list) {
    var newName = _root.name.text;
    var newScore = Math.round(punkte);
    var newEmail = _root.email.text;
    list.push({name:newName, email:newEmail, score:Number(newScore)});
    list.sort(sortieren);
    schreibeXML(list);
}
function schreibeXML(list) {
    var newList:XML = new XML("<?xml version='1.0' encoding='utf-8'?>");
    highscore = newList.createElement("highScoreList");
    newList.appendChild(highscore);
    var i = 0;
    while (i<list.length) {
        var entry = newList.createElement("entry");
        entry.attributes.name = list[i].name;
        entry.attributes.email = list[i].email;
        entry.attributes.score = list[i].score;
        highscore.appendChild(entry);
        i++;
    }
    sendeDaten(newList);
}
function sendeDaten(xml) {
    var sendlv:LoadVars = new LoadVars();
    sendlv.onLoad = function(success) {
        if (success) {
            trace(this.status);
        } else {
            trace("Fehler!");
        }
    };

    sendlv.xml = xml.toString();
    sendlv.sendAndLoad("aimtrain.php", sendlv, "POST");
}
function sortieren(a, b) {
    if (a.score<b.score) {
        return 1;
    } else if (a.score>b.score) {
        return -1;
    } else {
        return 0;
    }
}
aimtrain.php:
PHP-Code:
<?php
$xml 
stripslashes($_POST['xml']);
$newfile fopen("highscorelist.xml","w");
fwrite($newfile$xml); 
fclose($newfile);
?>
So weit so gut. Datei wird ausgelesen, der Inhalt lässt sich tracen, jedoch bleibt die Datei highscorelist.xml unverändert. Nach längerer Tracerei kam ich zu dem Schluss, dass der Fehler in der Funktion sendeDaten liegen muss, da sich NewList tracen lässt, sendlv.xml allerdings nicht mehr ohne "undefined".
ich hab wirklich keine Ahnung wo der Fehler liegt, vielleicht sogar in der aimtrain.php, ich bin ja schließlich Neuling in PHP.

Was genau passt nicht in dem Script?
__________________
Ich war traurig weil ich keine Schuhe hatte, bis ich einen sah, der keine Füße hatte

Geändert von DoTheSinWave (20-12-2005 um 19:32 Uhr)
DoTheSinWave ist offline   Mit Zitat antworten
Alt 21-12-2005, 07:55   #2 (permalink)
Freak
 
Benutzerbild von Silicone
 
Registriert seit: Dec 2005
Beiträge: 29
Sorry, kann deinen Fehler nicht erkennen...

Habe aber zufällig gestern etwas Ähnliches gebastelt: Admin-Menü für eine xmlDatei. Vielleicht hilft dir mein Code?

CODE:
Code:
stop();
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Methode, um ein XML in verschachtelte Arrays umzuwandeln
XMLNode.prototype.toArray = function(arr) {
	// Anzahl der Unterknoten
	var anzahlKnoten = this.childNodes.length;
	for (var i = 0; i<anzahlKnoten; i++) {
		if (this.childNodes[i].nodeType == 1) {
			// Elementknoten (Entspricht  nodeType 1)
			// neuer Knoten -> neues Array
			arr[i] = [];
			// Attribute prüfen
			for (var j in this.childNodes[i].attributes) {
				arr[i][j] = this.childNodes[i].attributes[j];
			}
			// Sind Unterknoten vorhanden?
			if (this.childNodes[i].hasChildNodes()) {
				// Aufruf der Methode (rekursiv)
				this.childNodes[i].toArray(arr[i]);
			}
		} else {
			// Textknoten (Entspricht Nodetype 3)
			arr[i] = this.childNodes[i].nodeValue;
		}
	}
	return arr;
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// XML einlesen
//
function einlesen() {
	xxx = new XML();
	xxx.ignoreWhite = true;
	xxx.load("port.xml");
	// wenn geladen...
	xxx.onLoad = function(status) {
		if (status) {
			// XML-Struktur auslesen
			_global.port_arr = this.firstChild.toArray([]);
			hauptNavi();
			ersterEintrag();
		}
	};
}
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Hauptnavi erstellen
//
function hauptNavi() {
	var startx = 501;
	var starty = 50;
	var k = -1;
	var l = 0;
	var haupt = this.createEmptyMovieClip("hauptnavi_mc", 1);
	for (var i = 1; i<=anzahl-3; i++) {
		if (i<10) {
			n = "thumb0"+i;
		} else {
			n = "thumb"+i;
		}
		tb = haupt.attachMovie("thumb", n, i);
		tb.id = i;
		if (i<10) {
			tb.ziffern.text = "0"+i;
		} else {
			tb.ziffern.text = i;
		}
		tb._x = startx+tb._width*(k+1);
		tb._y = starty+tb._height*(l);
		tb.onRollOver = function() {
			this.thumb_ani.gotoAndPlay(2);
		};
		tb.onRollOut = function() {
			this.thumb_ani.gotoAndPlay(6);
		};
		tb.onRelease = function() {
			if (_global.id != this.id) {
				_root.hauptnavi_mc["thumb"+actpic].thumb_ani.colorTo("0x333333", 2);
				//trace(_root.holder["thumb"+actpic]);
				//this.thumb_ani.colorTo("0xC07014", .5);
				this.thumb_ani.colorTo("0xffffff", .5);
				if (this.id<=10) {
					holder.loadMovie("pics/0"+(this.id)+".jpg");
				} else {
					holder.loadMovie("pics/"+(this.id)+".jpg");
				}
				_global.id = this.id;
				_root.head.text = "Nr. "+(this.id);
				_root.der_text.htmlText = port_arr[this.id-1][0];
			}
			actpic = this.ziffern.text;
		};
		k++;
		if (k>4) {
			k = -1;
			l++;
		}
	}
}
//
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
senden_mc.onRelease = function() {
	if (_root.der_text.text != "" && _root.der_text.text != "\r" && _root.der_text.text != port_arr[id-1][0]) {
		port_arr[id-1] = [];
		port_arr[id-1][0] = _root.der_text.text;
		//
		//Formatierung der XML-Datei
		// Einleitung
		xml_formatierung = "<?xml version=1.0 encoding=utf-8 ?>";
		xml_formatierung += "\n";
		xml_formatierung += "<content>";
		//ab hier die Inhalte
		for (var i = 0; i<port_arr.length; i++) {
			xml_formatierung += "\n";
			xml_formatierung += "  <item id='"+i+"'><![CDATA["+port_arr[i][0]+"]]></item>";
		}
		//hier der Abschluss
		xml_formatierung += "\n";
		xml_formatierung += "</content>";
		// Ende der XML-Formatierung
		// neues LoadVars-Objekt zum Übertragen der Daten an die PHP-Datei "parse.php"
		php_parse = new LoadVars();
		// der Name der XML-Datei
		var dateiname = "port";
		// Die Formatierungsvariable wird dem LoadVars-Objekt übertragen
		php_parse.uebergabe = xml_formatierung;
		// diese Variable bezeichnet den relativen Pfad zum Ordner, in dem die XML geladen wird. Wird sie wie jetzt leer gelassen, wird die XML im selben Verzeichnis wie die PHP-Datei erzeugt.
		php_parse.pfadname = "";
		// Hier wird nur der Name der zu generierenden XML-Datei übermittelt.
		php_parse.seitenname = dateiname+".xml";
		// zu guter Letzt werden die Daten an die PHP_Datei gesendet
		php_parse.onLoad = function() {
			_root.head.text = "Eingelesen!";
			//einlesen();
		};
		php_parse.sendAndLoad("parse.php", php_parse, "POST");
	}
};
// Start:
function ersterEintrag() {
	_global.id = 1;
	_root.head.text = "Nr. "+1;
	_root.der_text.htmlText = port_arr[0][0];
	holder.loadMovie("pics/01.jpg");
}
einlesen();
parse.php:
Code:
<?php

if ($uebergabe){
        $uebergabe=stripslashes($uebergabe);
        // die XML-Datei wird geöffnet/bzw. erstellt…
     $fp = fopen($pfadname . $seitenname,"w");
     // mit Inhalten gefüllt …
     fputs ($fp, $uebergabe);
     // und zu guter Letzt wieder geschlossen
     fclose($fp);
     }
echo "das wars";
?>
Maybe it helps,
Silicone
Silicone ist offline   Mit Zitat antworten
Alt 21-12-2005, 11:11   #3 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

weiß jetzt nicht genau obs daran liegt aber die parameterdefinition in deinen funktionsdefinitionen heißen wie der zur laufzeit eingetragene variablenname...

und zwar: "list"

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two 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 15:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele