sendAndLoad pas de retour sous flash {résolu}

sendAndLoad pas de retour sous flash {résolu} - Flash/ActionScript - Programmation

Marsh Posté le 26-08-2009 à 12:14:21    

Bonjour,
 
j ai un petit problème de communication php->flash merci par avance pour votre aide.
 
j ai un SWF avec 2 champs texte que j ai nommé vlogin et vmotdepasse et
un bouton nommé loginbutton
 
ensuite j envoi les infos avec le bouton vers php avec ce script :
 

Code :
  1. loginButton.onRelease = function()
  2. {
  3. var a_envoi:LoadVars = new LoadVars();
  4. var a_recevoir:LoadVars = new LoadVars();
  5. a_recevoir.onLoad = function (succes:Boolean)
  6. {
  7.  if(succes)
  8.  {
  9.   if (this.valeur == "bad" )
  10.   {
  11.    _root.gotoAndStop(3);//ici le champ texte sans nom avec la variable valeur doit afficher bad
  12.   }
  13.   else (this.valeur == "good" )
  14.   {
  15.    _root.gotoAndStop(2);//ici le champ texte sans nom avec la variable valeur doit afficher good
  16.   }
  17.  }
  18.  else
  19.  {
  20.   _root.gotoAndStop(4);// msg:erreur
  21.  }
  22. };
  23. a_envoi.login = vlogin.text;
  24. a_envoi.motdepasse = vmotdepasse.text;
  25. a_envoi.sendAndLoad("script.php", a_recevoir, "POST" );
  26. };


 
ma page php (testé avec un formulair html) elle me renvoi bien les bonne infos

Code :
  1. <?php
  2. include('connect.php');
  3. if($_POST['login'])
  4. {
  5. $login = ($_POST['login']);
  6. $motdepasse = ($_POST['motdepasse']);
  7.   // on recupère le password de la table qui correspond au login du visiteur
  8.   $sql = "select password from pwmaj where login='".$login."'";
  9.   $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  10.   $donnees = mysql_fetch_assoc($req);
  11.   if($donnees['password'] != $motdepasse)
  12.   {
  13.    echo "valeur=bad";
  14.   }
  15.   else
  16.   {
  17. echo "valeur=good";
  18.   }
  19. }
  20. ?>


 
voila le problème est que je ne reçoit rien dans flash et quoi qu'il arrive bon login ou mauvais il me renvoir sur la frame 2 qui normalement ne s'affiche que si le retour est "good" et c'est vide pas de good dans le champ..
 
pour info pas de movie clip :
calque 1 img 1 champ et bouton+script
calque 2&3 img 2&3 champ de retour avec var:valeur
calque 3 img 4 message d'erreur
encore merci beaucoup! pour votre aide.
 
MERCI A Zedlefou et Abais.


Message édité par ails le 27-08-2009 à 08:46:22

---------------
Ritouné mwen lé ritounin
Reply

Marsh Posté le 26-08-2009 à 12:14:21   

Reply

Marsh Posté le 26-08-2009 à 13:34:28    

Je pense que PHP ne renvoie pas ce que t'attend à Flash...
Ton code est faux (ça c'est à cause de la tolérance d'AS2 que t'a pas d'erreur), parceque tu as mi else au lieu de else if ! ce qui en fait la condition par défaut, c'est pourquoi il va dessus peut importe les issues...
Je ne connais cette methode sinon, le fait de passer de creer un sous-objets à ton objet "a_recevoir" (ici, "valeur" )...
essaye de ne mettre qu'un "bad" ou un "good" en guise d'echo, et dans flash, verifier this.value (je dis peut etre une très grosse betise, je code en AS3 perso)

 
EDIT :
Sinon, dans PHP, il faut utiliser cette syntaxe : echo "&valeur=good& "; // echo "&valeur=bad&";


Message édité par abais le 26-08-2009 à 13:40:39

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 26-08-2009 à 15:19:04    

merci beaucoup
je suis trop nul lol! else if!
 
bon en effet la fonction de condition est bonne est mes condition respecté  
 
MAIS :'( cette même valeur de condition ne s'affiche pas dans le champ texte dynamique de la frame suivante
 
avez vous une idée ?
 
encore merci abais


---------------
Ritouné mwen lé ritounin
Reply

Marsh Posté le 26-08-2009 à 15:52:15    

1. Si tu tests pas en-ligne, il te faut WAMP et appeler ton fichier PHP de la sorte http://localhost/mondossier/script.php
2. Ton AS est très mauvais. (désolé :/ )
Tu ne dois pas utiliser _root et tu dois peupler tes champs textes en leur donnant un nom d'occurence et avec cette syntaxe :
monChamp_txt.text = maVar;
 
Ce qui te permettra de faire du debug. Tu peux tester ton code comme ceci.
Tu crées un champ texte dynamique "DEBUG".
Ensuite :
 
a_recevoir.onLoad = function (succes:Boolean){
  if(succes){
    DEBUG.text = this + " - ma valeur : " + this.valeur;
  }
}
 


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 26-08-2009 à 16:07:02    

Zedlefou a écrit :

1. Si tu tests pas en-ligne, il te faut WAMP et appeler ton fichier PHP de la sorte http://localhost/mondossier/script.php
2. Ton AS est très mauvais. (désolé :/ )
Tu ne dois pas utiliser _root et tu dois peupler tes champs textes en leur donnant un nom d'occurence et avec cette syntaxe :
monChamp_txt.text = maVar;
 
Ce qui te permettra de faire du debug. Tu peux tester ton code comme ceci.
Tu crées un champ texte dynamique "DEBUG".
Ensuite :
 
a_recevoir.onLoad = function (succes:Boolean){
  if(succes){
    DEBUG.text = this + " - ma valeur : " + this.valeur;
  }
}
 


 
cool!
merci beaucoup pour les infos avec ça je suis sur que c'est bon! :D
 
Pour l'AS je code seulement depuis 2 semaines et flash ça fait un mois que je l'utilise et je suis pas du genre à commencé par lire les base lol même si je le regrette souvent !
 
petit question pour "Tu ne dois pas utiliser _root" je doit mettre quoi pour géré la scène générale à la place de _root?
 
et pour le"debug" je vais chercher plus d'info je comprend pas trop a quoi correspond le + le -  
 
 
Et le this + " - ma_valeur : "  c'est le nom de la variable qui reçoit la variable de php ?  


---------------
Ritouné mwen lé ritounin
Reply

Marsh Posté le 26-08-2009 à 22:23:17    

ails a écrit :


petit question pour "Tu ne dois pas utiliser _root" je doit mettre quoi pour géré la scène générale à la place de _root?


Tu peux faire une fonction.
a_recevoir.onLoad = function (succes:Boolean){
  if(succes){
    treatSendAndLoad(this)
  }
}
 
function treatSendAndLoad(targ){
   trace(targ.valeur);
}
 

Citation :

et pour le"debug" je vais chercher plus d'info je comprend pas trop a quoi correspond le + le -


Le debug c'est ma façon de nommer le débugage. Ca te permet d'écouter ce qui se passe dans ton anim. Tu rentres des variables dans un champ texte pour comprendre le résultat des opérations.
 

Citation :

Et le this + " - ma_valeur : "  c'est le nom de la variable qui reçoit la variable de php ?


Alors pas du tout.
 
Au début de ton code, tu as écris ceci
var a_recevoir:LoadVars = new LoadVars();
et à la fin
a_envoi.sendAndLoad("script.php", a_recevoir, "POST" );
 
Ce qui veut dire que les données renvoyées par PHP vont s'inscrire dans l'objet "a_recevoir".
Quand tu fais
a_recevoir.onLoad = function (succes:Boolean){
  if(succes){
    DEBUG.text = this + " - ma valeur : " + this.valeur;
  }
}  
 
"this" représente ton objet "a_recevoir". En affichant this (comme ici dans un champ texte) tu peux voir tout ce qu'il contient. Et donc parfois les messages d'erreurs de PHP, si tu l'as codé pourqu'il t'en envoie.
De plus, cette ligne
DEBUG.text = this + " - ma valeur : " + this.valeur;
 
Si tu veux afficher le message "hello world", tu vas faire comme ça
trace("hello world" );
 
Si tu veux afficher en plus un autre truc (on va dire un chiffre aléatoire et la taille de ta scéne) la syntaxe, c'est ça :
trace("hello world " + Math.random() + Stage.width)
 
Ca va te donner un truc du genre "hello world 0.23365 640"


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 27-08-2009 à 08:44:42    

Ah cool !
OK! je comprend beaucoup mieux et ça fonctionne !
merci! merci beaucoup à tous les deux pour votre aide.
j'ai pas fini mon combat avec flash AS :pt1cable: donc a bientôt peut être :hello:


---------------
Ritouné mwen lé ritounin
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed