Pb sendAndLoad

koala5255 Messages postés 1 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 7 juillet 2006 - 13 juin 2006 à 13:12
fredericleput Messages postés 7 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 11 août 2006 - 23 juin 2006 à 11:59
Bonjour à tous !

Voilà, j'ai un petit soucis lors de l'utilisation de la fonction sendAndLoad, lorsque je veux envoyer les données d'un formulaire flash vers une page php pour connexion avec une BDD mySQL.
Le code fonctionne si j'utilise simplement la faonction send( ) , ce qui me fait dire que ma page php ne renvoit pas correctement quelque chose à flash, mais...

Voici le code actionscript:
************************************************************
stop();
import mx.controls.*;

var tiNom:TextInput;
var tiPrenom:TextInput;
var taMessage:TextArea;
var bEffacer:Button;
var bEnvoyer:Button;
var nom_label:Label;
var prenom_label:Label;
var message_label:Label;

nom_label.setStyle("color", "0xFFFFFF");
prenom_label.setStyle("color", "0xFFFFFF");
message_label.setStyle("color", "0xFFFFFF");

this.tiNom.tabIndex = 1;
this.tiPrenom.tabIndex = 2;
this.taMessage.tabIndex = 3;
this.bEffacer.tabIndex = 4;
this.bEnvoyer.tabIndex = 5;

Selection.setFocus(tiNom);
focusManager.defaultPushButton = bEnvoyer;

post_mc.onRelease = function() {
    this._parent.gotoAndStop("envoyer");
};
view_mc.onRelease = function() {
    this._parent.gotoAndStop("voir");
};

var clearBtnListener:Object = new Object();
clearBtnListener.click = function(evt:Object) {
    tiNom.text = "";
    tiPrenom.text = "";
    taMessage.text = "";
};
this.bEffacer.addEventListener("click", clearBtnListener);

var postBtnListener:Object = new Object();
postBtnListener.click = function(evt:Object) {   
    if (tiNom.text.length == 0) {
        Selection.setFocus(tiNom);
        Alert.show("Saisissez votre nom", "Erreur", Alert.OK);
        return false;
    }
   
    if (tiPrenom.text.length == 0) {
        Selection.setFocus(tiPrenom);
        Alert.show("Saisissez votre prénom", "Erreur", Alert.OK);
        return false;
    }
   
    if (taMessage.text.length == 0) {
        Selection.setFocus(taMessage);
        Alert.show("Spécifiez un message....", "Erreur", Alert.OK);
        return false;
    }   
   
    var url = "http://localhost/";
    var send_lv:LoadVars = new LoadVars();
    send_lv.onLoad = function(success:Boolean) {
        if(success){   
            tiNom.text = "";
            tiPrenom.text = "";
            taMessage.text = "";
            Alert.show("Merci de votre participation.", "Succès", Alert.OK);
        }else{
            Alert.show("Impossible d'enregistrer votre message..", "Echec", Alert.OK);
        }
    };   
    send_lv.nom = tiNom.text;
    send_lv.prenom = tiPrenom.text;
    send_lv.message = taMessage.text;
    send_lv.sendAndLoad("http://localhost/essai.php", send_lv, "POST");       
};
this.bEnvoyer.addEventListener("click", postBtnListener);
****************************************************************

Et voici le code php:
****************************************************************
<?php
// Preparation de la connexion

function parse($variable,$valeur)
{
echo "&".$variable."=".utf8_encode($valeur);
}

$host = "localhost";
$user = "root";
$password = "****";
$bdd = "****";

// Connexion
$connexion = mysql_connect($host, $user, $password) or die ("impossible de se connecter au
serveur");
$db = mysql_select_db($bdd,$connexion) or die ("impossible de se connecter à la base de donnees");
$SQLQuery = "INSERT INTO pa (nom,prenom,message) VALUES ('$nom', '$prenom', '$message') ";
$result = mysql_query($SQLQuery,$connexion) or die ("La requête n'est pas exécutable");

if($result) parse("success",true);
else parse("success",false);
mysql_close($connexion);
?>
******************************************************************

Systématiquement, flash me renvoit la fenêtre "Impossible d'enregistrer votre message", et rien ne s'enregistre sur la BDD. En utilisant sned() au lieu de sendAndLoad(), tout fonctionne...

Quelqu'un voit-il le problème ???

1 réponse

fredericleput Messages postés 7 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 11 août 2006
23 juin 2006 à 11:59
il vaut mieux utiliser un objet LoadVars pour l'envoi vers php et un objet XML pour receptionner les variables :
la fonction parse ne fonctionne pas toujours d'ou l'utilisation de XML qui lui fonctionne super avec Flash...
dans flash :

// objet LoadVars pou l'envoi
objLV = new LoadVars();
objLV.mavariable = "coucou";
objLV.sendAndLoad("http://localhost/essai.php", objXML, "POST"); 

// objet XML pour la recuperation
objXML = new XML();
objXML.ignoreWhite = true;
objXML.onLoad = function(ok)
{
   if(ok)
   {
      trace(this);
   }
   else
   {
      trace("pb chargement XML");
   }
 }

dans php :

$maVariable = $_POST["mavariable"];
// traitement BDD
.......

// renvoie du message à flash
$chaineXML = "<xml ........ encode='UTF-8'>"; // tres important pour les accents

si traitement ok
if($traitement == ok)
{
      $chaineXML .= "<message>ok</message>"; 
}
else
{
   $chaineXML .= "<message>pb</message>";
}

// envoi du message
echo $chaineXML;
0
Rejoignez-nous