PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche Hilfe bei Flash MX und PHP


freeze
30.06.2004, 20:08
Hey @all,
ich weiß zwar nicht ob ich mit Flash MX hier richtig bin, jedoch weiß ich nicht wo ich es sonst posten soll.
Nun zu meinen Problem. UNd zwar habe ich per php ein Gästebuch, diese Gästebuch würde ich gerne für meine lash-Seite ebenso verwenden.
Ich habe mir da ein eigenes PHP-Skript dafür angelegt, das mir die Daten aus der MySQL-Datenbank holt, und es für Flash aufbereitet. Nur funktioniert da irgendwie die FOR-Schleife nicht. ich kann mir auch nicht erklären warum sie nicht funktioniert. Er gibt mir einfach nicht die Variablen aus
Hier mal der PHP Code, der bereits funktioniert:

.
.
.
switch($_GET['id']) {
case 1: // Abfrage für das Gästebuch
$mysql_select = "SELECT * FROM " . $Table . " ORDER BY ID ASC";
$result = mysql_query($mysql_select, $DB);
$cant = 0;
if($result) {
while($obj=mysql_fetch_object($result)) {
$message = $obj->message;
echo "&Datum$cant=" . $obj->datum . "\n";
echo "&Name$cant=" . $obj->name . "\n";
echo "&ICQ$cant=" . $obj->icq . "\n";
echo "&Email$cant=" . $obj->email . "\n";
echo "&Webpage$cant=" . $obj->webpage . "\n";
echo "&Message$cant=" . $message . "\n";
$cant++;
}
echo "&cant=" . $cant . "\n";
}
break;
.
.
.

Dieser Teil bereitet mir den String wie folgt auf:

&Datum0=30.06.2004
&Name0=Testuser
&ICQ0=01237981
&Email0=keine Email
&Webpage0=kein Eintrag
&Message1=Testeintrag
&Datum1=30.06.2004
&Name1=Anonym
&ICQ1=12763821
&Email1=googlemaster@google.de
&Webpage1=http://www.google.de
&Message1=Testeintrag2


Hier ist mal der Flash-Code

on(Release) {
// ?id=1 ......Hole Daten für das Gästebuch aus der Datenbank
// ?id=2 ......Schreibe übernommene Daten in die Datenbank
var conString = "flash.php?id=1";

/*
- - Wenn ich diese Teil entkommentiere, dann belieben die Felder leer. Warum? - -
errormsg.text = "";
datum.text = "";
name.text = "";
icq.text = "";
email.text = "";
website.text = "";
nachricht.text = "";*/
/*
- - Dieser Teil funktioniert im Ausgabefenster unter Flash
for(var i=0; i<100; i++) {
trace("Bin in Schleife I="+i);
}*/
myData = new LoadVars();
// myData.ref = this;
myData.load(conString, myData);
myData.onLoad = function(success) {
if(success) {
errormsg.text = "Loading Data...";
for(var i=0; i<this.cant; i++) {
datum.text = this["Datum"+i];
name.text = this["Name"+i];
icq.text = this["ICQ"+i];
email.text = this["Email"+i];
website.text = this["Webpage"+i];
nachricht.text = this["Message"+i];
}
counter.text = this.cant;
}
else {
errormsg.text = "Error loading data\n" + conString;
trace("Error loading data");
}
}
}

Folgender Flash-Code funktioniert (ich schreibe aber nurmehr aber der IF-Anweisung damit es nicht zu unübersichtlich wird):

if(success) {
errormsg.text = "Loading Data...";
datum.text = this.Datum0;
name.text = this.Name0;
icq.text = this.ICQ0;
email.text = this.Email0;
website.text = this.Webpage0;
nachricht.text = this.Message0;
counter.text = this.cant;
}
else {
errormsg.text = "Error loading data\n" + conString;
trace("Error loading data");
}
}
}

Ich habe natürlich gegoogelt, und da habe ich folgende Code-Schnipsel gefunden:

myData = new LoadVars();
myData.ref = this;
myData.load(conString, myData);
myData.onLoad = function(success) {
if(success) {
errormsg.text = "Loading Data...";
for(var i=0; i<this.cant; i++) {
// NUR was bedeutet das folgende???
this.ref["Title_txt"+i].text = this["Title_txt"+i]
this.ref["Coments_txt"+i].text = this["Coments_txt"+i]
this.ref["holder_mc"+i].loadMovie(this["Image"+i])
}
}
else {
trace("Error loading data");
}
}


Ich hoffe es kann mir jemand helfen

Lg freeze


butterkeks
30.06.2004, 22:00
Kann es sein, dass du &cant=... vergessen hast mitzukopieren? Ich sehe es nämlich net im Output deines PHP scripts. Zur Sicherheits kannste cant ja mit trace() überprüfen. Ich glaube jedoch weniger, dass es daran liegt, denn der PHP code scheint ja richtig zu sein, so auf dem ersten Blick.

Wenn es net zu viel Aufwand wäre, dann könnteste das ganze auch als XML aufbereiten und den internen Parser von MX verwenden. Achte bei der XML Methode darauf, dass du Umlaute und Sonderzeichen richtig kodierst.
Mehr dazu auf http://www.actionscript.org/tutorials/beginner/XML-Formatted_Content/index.shtml

freeze
01.07.2004, 19:02
Doch, &cant=... habe ich im PHP-Skript, ist ausserhalb der WHILE-Schleife

$cant = 0;
if($result) {
while($obj=mysql_fetch_object($result)) {
$message = $obj->message;
echo "&Datum$cant=" . $obj->datum . "\n";
echo "&Name$cant=" . $obj->name . "\n";
echo "&ICQ$cant=" . $obj->icq . "\n";
echo "&Email$cant=" . $obj->email . "\n";
echo "&Webpage$cant=" . $obj->webpage . "\n";
echo "&Message$cant=" . $message . "\n";
$cant++;
}
echo "&cant=" . $cant . "\n";


Kannst Du mir erklären was dieser Code macht, soll für mehrere Ausgaben sein, also bsp. Titel0=...&Titel1=...&Titel2=... usw. nur verstehe ich den nicht ganz, wie muss ich dann die Textfelder erstellen? Ich weiß ja vorher nicht wieviel &cant ausspuckt?:

myData = new LoadVars();
myData.ref = this;
myData.load(conString, myData);
myData.onLoad = function(success) {
if(success) {
errormsg.text = "Loading Data...";
for(var i=0; i<this.cant; i++) {
// NUR was bedeutet das folgende???
this.ref["Title_txt"+i].text = this["Title_txt"+i]
this.ref["Coments_txt"+i].text = this["Coments_txt"+i]
this.ref["holder_mc"+i].loadMovie(this["Image"+i])
}
}
else {
trace("Error loading data");
}
}


Lg freeze