[MX] Formmail mit LoadVars & PHP - letzter Schritt... !

Hallo,

ich habe in meinem Flash Film ein Formblatt mit den UI Komponenten von Flash MX erstellt und dazu das passende ("sende Daten per E-Mail") PHP Skript geschrieben.

Die Daten lade ich per LoadVars.

Die Übergabe der Daten und das Versenden der E-Mails funktionieren fantastisch. Da gibts keine Probleme.

Das einzige Problem ist folgendes:

Wenn ich auf den "Submit Button" zum Abschicken der eingegebenen Daten klicke geht ein leeres Fenster auf und ich komme nicht mehr zurück zu meinem Flash Film.

Habe erst versucht die Submit Funktion mit der UI Komponente Push Button und danach mit einem "normalen" Button zu realisieren.
Die Übergabe der Daten und das PHP Skript klappen mitbeiden Buttonversionen, jedoch wechselt bei dem UI Push Button mein Fentser in ein leeres, weißes und bei dem "normalen Button" geht ein neues, leeres Fenster auf ( userData.send("request.php", "POST"); ).

Hier der Flash-Code meines Buttons (des "normalen Buttons"):

on (press, release) {
userData = new LoadVars();
userData.name = name;
userData.company = company;
userData.street = street;
userData.city = city;
userData.state = state;
userData.zip = zip;
userData.mailabs = mailabs;
userData.phone = phone;
userData.message = message;
userData.janitorial = janitorial.getValue(); //Check Box
userData.security = security.getValue(); //Check Box
userData.housekeeping = housekeeping.getValue(); //Check Box
userData.food = food.getValue(); //Check Box
userData.engineering = engineering.getValue(); //Check Box
userData.send("request.php", "POST");
gotoAndStop("Contact us", 1);
}

Kann mir jemand helfen und erklären, wie ich das Skript im Hintergrund laufen lasse, oder (bin ja hier im Flash Forum), wie ich dem Flash sagen kann, daß er stärker sein soll als das PHP Skript und sich nicht von diesem unterkriegen lässt,

wie komme ich wieder zu meinem Flash zurück !!


Danke

P.S..:
Hier noch das PHP Skript:

<?php
$adminaddress="name@mail.com";

$sitename="http://www.adresse.com";


mail("$adminaddress","Request for Information",
"A visitor at $sitename has applied a request for information\n
Name:$name\n
Company Name:$company\n
Street Address:$street\n
City:$city\n
State:$state\n
Zip Code:$zip\n
Phone:$phone\n
Email Address:\n$mailabs\n
User Message:$message\n\n
Service Interest:\n
Janitorial:$janitorial\n
Security:$security\n
Housekeeping:$housekeeping\n
Food:$food\n
Engineering:$engineering\n");

mail("$mailabs","Thank you for visiting $sitename",
"Thank you for your interest");

?>

DANKE

Christian
 
Versuch´s mal mit
PHP:
 userData.load("request.php", "POST");
Geht bei mir einwandfrei.
Du könntest dann noch in die Php-Datei folgendes ausgeben:
&send=done&
wodurch man in Flash dann sowas in der Art machen kann:
PHP:
 if ( userData.send == "done" ) trace ("E-Mail wurde verschickt" )
 
meinst Du das so ?:

PHP:
function doSubmit() {
	userData = new LoadVars();
	userData.name = name;
	userData.company = company;
	userData.street = street;
	userData.city = city;
	userData.state = state;
	userData.zip = zip;
	userData.mailabs = mailabs;
	userData.phone = phone;
	userData.message = message;
	userData.janitorial = janitorial.getValue();
	userData.security = security.getValue();
	userData.housekeeping = housekeeping.getValue();
	userData.food = food.getValue();
	userData.engineering = engineering.getValue();
	userData.load("request.php", "POST");
	gotoAndStop("Contact us", 1);
}

?

Hat so auf Anhieb nicht geklappt - erstmal hat der Button nichts gemacht und anschließend mir eine E-Mail mit leeren Feldern ausgegeben, wo eigentlich die Variablen stehen sollten.

Hab ich da oben noch Fehler drin ? Bin erst seit ein paar Tagen dabei PHP und Formmails zu schreiben - brauchs für nen Job und interessant find ichs sowieso ..
Wenn's denn klappt. Deine Version hört sich klasse an und die Viper Seite ist echt fein geworden. Ernst gemeint, ohne Schleimerei...

Wär super wenn Du oder jemand anderes auf der Basis Deines

userData.load("request.php", "POST");

Vorschlages mir da mehr Tips geben könnte !!

Grüße,

Chris
 
Hi,

sonst versuchs mal mit
PHP:
UserData.sendAndLoad("request.php, UserData, "POST");
In PHP kannst Du übrigens mit echo() Variablen ausgeben, die dann in Deinem LoadVars-Objekt zur Verfüfung stehen. mit
PHP:
UserData.onLoad = function() {
  trace(this.returnVar); // Wenn z.B. echo("returnVar='transmission complete'") ausgegeben wurde
}

Gruß

P.S.: meines Wissens müsste vor .load mindestens ein .send, da LoadVars.load keine Daten versendet... :confused: - oder täuche ich mich da jetzt grundlegend (@Chris Kurt)?
 
Zuletzt bearbeitet:
bei load werden Daten nur versendet, wenn du das POST hinzufügst, das geht dann über den html Mantel - Das hatten wir schon mal Datic, die Überraschung war ja, das man POST weglassen kann ....


Grüsse
B
 
(*hüstel) - da ließ mich meine Erinnerung wohl im Stich. ;)

... der "HTML-Mantel" sollte hier ja allerdings vermieden werden (wenn das mit dem sichtbaren Aufruf der Seite einhergeht, wovon ich ausgehe).

Gruß

P.S.: das ist ein typisches Beispiel für die Dinge, die ich mir nie merken kann - wenn ich es brauche, klappt es eben nach spätestens 2 Versuchen, aber wenn man mich nach 2 Wochen wieder fragt... :rolleyes: (zum Glück sind Google und die Referenz normalerweise meine Freunde...)
 
Zuletzt bearbeitet:
OK Jungs !

Hab jetzt das ursprüngliche Problem gelöst.
Das senden der Daten funktioniert, ohne das der neue IE Frame aufgeht mit:

PHP:
userData.sendAndLoad("request.php", userData, "POST");

Hab erst gar nicht versucht das "POST" wegzulassen, klappt auch so.

Jetzt brauche ich natürlich wie Ihr schon gezeigt habt eine Message für den User, das die Daten gesendet wurden.
Habe auch das so versucht wie Ihr dies auf verschiedene Art beschrieben hattet,
mit der if Schleife wie Chris gepostet hat und mit dem echo im PHP und der Funktion im AS dazu.
Ich krieg das nicht hin.
Am liebsten würde ich in den nächsten Frame meiner Zeitlaufleiste selber ne Message scheiben und nach senden und laden der Daten springt dann der Flash Film auf diesen zweiten Frame.
Hab das schon mit gotoAndPlay in der doSubmit Schleife versucht, klappt aber nicht.

Könnt Ihr mir bitte nochmal genau zeigen wie ich dann die Message -transmission complete - oder so etwas nach dem Senden und Laden der Daten anzeigen lassen kann ?
Dann bin ich auch endgültig durch mit diesem Thema aber - das fehlt jetzt halt noch.......


DANKE ! :rolleyes:

Christian
 
Hi,

ich habe nochmal in eine meiner Dateien geschaut :rolleyes: und so klappt es dort mit dem "Feedback" (PHP):
PHP:
$suc = "storage failed";
// hier der Code zum Verarbeiten der Daten
if ($complete) { // wenn alles klappte...
    $suc = "storage complete";
}
echo("suc=".$suc);
In Flash habe ich dann nach dem onLoad-Ereignis des LoadVars-Objektes (sendAndLoad) die Variable "suc" zur Verfügung:
PHP:
trace(meinLoadVars.suc);
Die Variable gebe ich an ein Textfeld weiter und siehe: dort steht dann entweder "storage failed" oder "storage complete". (Die Anführungszeichen um den String bei echo() sind Quatsch gewesen - aus der Referenz:
Die heruntergeladenen Daten müssen den MIME-Inhaltstyp application/x-www-form-urlencoded aufweisen...
mehrere Variablen sollten also z.B. mit echo("var1=Hallo&var2=sonstwas"); zurückgegeben werden.)

Gruß
 

Neue Beiträge

Zurück