Forums Développement Multimédia

Aller au contenu

[Résolu] Communication Flash -> Mysql

CODE

22 réponses à ce sujet

#1 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 24 September 2011 - 04:23 AM

Bonjour à tous,

Voilà j'entame les communcation entre flash et les bases de données Mysql, j'ai suivis l'exellent tuto de Nataly sur le sujet (http://ressources.me...ication_php_as3), ainsi que les tutoriels du Site du Zero concernant les communication PHP ->MySql mais voilà, j'ai un petit problème...

Je n'arrive pas a envoyer des varaibles a mon formulaires php, il me retourne simplement un espace vide. L'inverse par contre, fonctionne a la perfection, j'arrive a envoyer des données de mon php vers flash. Pourriez vous m'aider ?


Voici mes communications en AS3 :


function OkOnClick(e:MouseEvent)
{
                                       
        var urlLoader:URLLoader = new URLLoader ();
                                       
        var urlRequest:URLRequest = new URLRequest ("php.php");
                                       
        var urlVariables:URLVariables = new URLVariables ("pseudo=test&password=pass");
        urlRequest.method = URLRequestMethod.POST;
        urlRequest.data = urlVariables;
                                       
        urlLoader.addEventListener(Event.COMPLETE, donneesChargees);
        urlLoader.load(urlRequest);

}
                                       
function donneesChargees (e:Event)
{
        var Retour:String;
        Retour = (e.target as URLLoader).data;
       
        saisieLogin.text = Retour;
}
                                       
 



Mon fichier php :


<?php

echo $_POST['pseudo'];

try
{
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=serveur;dbname=base, 'pseudo', 'mdp');


        $reponse = $bdd ->query('
SELECT Pseudo, Password FROM Login');

        while ($donnees = $reponse -> fetch())
        {

        }

        $reponse->closeCursor();


}

catch (Exception $e)
{
        die('
Erreur : ' . $e->getMessage());
}
?>     


En toute logique, saisieLogin.text devrait donc afficher "test", hors il n'affiche rien.

Modifié par draad, 24 September 2011 - 04:23 AM.


#2 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2533 messages

Posté 24 September 2011 - 10:36 AM

Salut,

tu as essayé avec la syntaxe de la doc ?

http://livedocs.adob...ExamplesSummary

Dans ton cas ça donnerai quelque chose dans ce goût là


var urlVariables:URLVariables = new URLVariables ( );
urlVariables.pseudo    = 'test' ;
urlVariables.password = 'pass' ;

 

"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site

#3 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 24 September 2011 - 15:04 PM

Bonjour,

Oui j'avais essayé, dans le doute j'ai retenté, cela ne corrige pas le problème.

#4 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2533 messages

Posté 24 September 2011 - 15:53 PM

Pour voir ce qui est envoyé au PHP, tente un


echo $_REQUEST ;
 

et dans le flash, dans la fonction de retour


trace(e.target.data) ;
 

note : ça n'a pas de rapport direct avec ton soucis, mais je pense qu'utiliser un fichier nommé php.php est maladroit, de même, je t'invite à ne pas utiliser de majuscule pour tes noms de fonctions et de variables, mais plutôt des minuscules.

function OkOnClick() et var Retour:String
"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site

#5 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 24 September 2011 - 16:25 PM

Il faut que tu vérifies le php vu que je ne vois rien qui cloche du côté as (mais c'est pas une garantie, suis kekfois très ahurie ;))

je serais toi je la jouerais butée :

d'abord

<?php
  echo "zut à la fin";
?>

et je tracerais le résultat (plutôt qu'un champ texte, histoire d'éviter de multiplier les risques d'erreur)

si tu ne récupères rien il faut re-re-regarder le as et vérifier l'adresse du php ; et si tu récupères la chaine, essaie avec la variable :

<?php
   echo "zut à la fin : ".$_POST['pseudo'];
?>



et… oui, pas utile de transtyper un objet en son propre type ;)
e.target, c'est de l'URLLoader (trace si tu doutes)



tiens nous au courant :)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#6 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 24 September 2011 - 16:31 PM

Bon alors mon probleme là, c'est qu'il faut que je passe sur mon serveur pour tester les communications flash -> php, sinon ca me fait des erreurs.

Donc pour tester, j'ai rajouté simplement en local

trace (urlVariables);

dans mon OkOnClick(), ce qui me renvoie : password=pass&pseudo=test


J'ai ensuite testé sur le serveur en modifiant : echo $_REQUEST;

Ce qui me renvoie Array dans le champ texte sur le serveur.

#7 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 24 September 2011 - 16:34 PM

@ Nataly si je fais : echo "Mon pseudo est ".$_POST['pseudo'], alors mon champs de texte me renvoie : Mon pseudo est

#8 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2533 messages

Posté 24 September 2011 - 17:24 PM

Pour finir tu peux faire dans le flash :


trace( e.target.data.length ) ;
 

"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site

#9 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 24 September 2011 - 17:27 PM

donc un truc nous échappe :?

ds le doute j'ai copié collé ton code et testé en espérant que ça ne marche pas ;)
Et ben si…

A tout hasard donc les deux fichiers, si tu veux jouer au jeu des 7 erreurs… :cool:

Fichier(s) joint(s)


Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#10 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 24 September 2011 - 17:44 PM

Je ne comprends vraiment pas dans ce cas ...

Vous pouvez tester le code sur le serveur ici : http://straterrestre...aterrestre.html

Entrez n'importe quel Pseudo et n'importe quel motdepasse puis cliquez sur OK, le champs de texte devrait donc afficher "alors test", pourtant il n'affiche que "alors"...

Se peut-il que mon serveur necessite un autre mode de transmition que POST ?

#11 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 24 September 2011 - 17:47 PM

tu nous montres le php ? :roll:
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#12 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 24 September 2011 - 17:49 PM

Le voici :)



<?php

echo "alors".$_POST['pseudo'];

try
{
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=sql.franceserv.fr;dbname=draadounet-db1', 'draadounet', 'byMqFJL1');


        $reponse = $bdd ->query('SELECT Pseudo, Password FROM Login');

        while ($donnees = $reponse -> fetch())
        {

        }

        $reponse->closeCursor();


}

catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
       
 

?>
 


#13 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 24 September 2011 - 17:56 PM

le mode butée voudrait que tu testes sans les try catch… (juste la ligne qui regimbe) même si je vois pas bien… ou justement si : pcq on n'y comprend rien et qu'il faut remonter à un moment où nom d'un schmoll, ça marche !
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#14 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 24 September 2011 - 18:11 PM

Donc en testant le mode buté (j'adore cette denomination :P):


<?php

echo "alors".$_POST['pseudo'];
 
?>
 

Ca me renvoie toujours seulement "alors" :(

lien de test : http://straterrestre...aterrestre.html

#15 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2533 messages

Posté 24 September 2011 - 19:22 PM

Bon, on va bien y arriver,

Peux-tu juste mettre dans le fichier php


echo "alors " . $_REQUEST['pseudo'] ;
 

Après tu testes si ça fonctionne en appelant directement l'URL


http://straterrestre.franceserv.com/php.php?pseudo=mediabox
 

ça fonctionne ?

note : tu veux pas utiliser un autre nom pour le fichier php ?
utiliser des mots réservés n'a jamais produit de bonnes choses
"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site

#16 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 25 September 2011 - 05:37 AM

Oula...

Bon j'ai voulu corriger le nom de mon php comme tu le proposais dcz.switcher, pour une obscure raison, si je change le nom de mon fichier php, alors plus rien ne marche du tout (le champ pseudo ne change pas) ... bien entendu j'ai aussi changé le nom du fichier dans mon .as et véririfé et revérifié n'avoir fait aucune faute de frappe. Mon probleme pourrait-il venir du serveur tout simplement, je ne vois vraiment pas pourquoi un fichier nommer "php.php" marcherais et pas un fichier nommé "login.php" ou encore "communication.php" ...

Sinon pour tester je suis retourné au "php.php" en changeant

echo "prout".$_POST['pseudo'];

par


echo "prout".$_REQUEST['pseudo'];

Le cadre texte me renvoie seulement "prout".


EDIT : pardon, si j'entre directement l'adresse suivante :

http://straterrestre.franceserv.com/php.php?pseudo=mediabox

alors je ombe sur une page blanche avec ecrit

proutmediabox

Un début de solution serait-il en train de pointer le bout de son code?

Modifié par draad, 25 September 2011 - 05:41 AM.


#17 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 25 September 2011 - 06:04 AM

EDIT : j'ai tout effacé de mon serveur, estimant qu'il etait impossible d'admettre que mes fichiers ne marchent plus après les avoir renommer. Donc logique repartir d'une base propre !

Ainsi, le fichier php avec comme code
echo "prout".$_REQUEST['pseudo'];

Renvoie CORRECTEMENT "prouttest" dans le saisieLogin.text ! Yahouhouuuu

Merci merci merci !

#18 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 25 September 2011 - 08:46 AM

bon… pas compris le pourquoi du comment O.O

mais ayé ? tu envoies et récupères ? Il faudra s'en satisfaire… ;)

bonne suite ++
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#19 St4n

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 98 messages

Posté 25 September 2011 - 11:53 AM

Il te suffit sinon de tester dans ton navigateur avec l'extension firefox "tamper data", qui te permet de connaître le contenu des paquets échangés (et donc de voir les valeurs envoyées par flash, et retournée par php.
Ca te permet de tracer très simplement tes soucis.

#20 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 25 September 2011 - 18:22 PM

Oki, merci pastilas ! Et merci a Nataly et dcz.switcher bien sûr. Cela dit si vous avez une explication concernant le fait que $_REQUEST fonctionne et pas $_POST, j'aimerais la connaitre, comme ça non seulement ça fonctionne mais en plus je saurais pourquoi ^^

#21 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 25 September 2011 - 22:26 PM

ça me reste inexplicable aussi :(
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#22 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 26 September 2011 - 05:21 AM

Tiens j'ai un nouveau petit probleme un peu bete, quand j'ajoute une entrée dans ma bdd, celle ci s'ajoute en double ou en triple, y'a-t-il un moyen de régler ça ?

Voici mes codes :

<?php


$PasswordTest = $_REQUEST['password'];
$PseudoTest = $_REQUEST['pseudo'];
$MailTest = $_REQUEST['mail'];

 
try
{
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=hide;dbname=hide', 'hide', 'hide');
 
       
        $reponse = $bdd ->prepare('INSERT INTO Login(Pseudo, Password, Mail) VALUES (:Pseudo,:Password,:Mail)');
        $reponse->execute (array(

                'Pseudo' => $PseudoTest,
                'Password' => $PasswordTest,
                'Mail' => $MailTest,

                ));

       
        $reponse->closeCursor();
 
 
}
 
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
         
 
 
?>
 

et coté as :

else if (ecran == 2 && Length < 2)
                        {
                                saisieLogin.text = "Pseudo Dispo";
                                saisiePassword.text = "";
               
                                        var urlRequest:URLRequest = new URLRequest ("creation2.php");
                                        var urlVariables:URLVariables = new URLVariables ();
                                       
                                        urlVariables.pseudo = Login;
                                        urlVariables.password = Password;
                                        urlVariables.mail = Email;
                                                 
                                        urlRequest.method = URLRequestMethod.POST;
                                urlRequest.data = urlVariables;
                                       
                                         urlLoader.addEventListener(Event.COMPLETE, compteCree);
                                 urlLoader.load(urlRequest);
                        }
}

function  compteCree (e:Event)
{
        saisieLogin.text = "Compte";
        saisiePassword.text = "Créé.";
                                       
        ecran = 1;
        EcranLogin ()
}

Modifié par draad, 26 September 2011 - 05:21 AM.


#23 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 28 September 2011 - 16:14 PM

Titillé par l'obligation d'utiliser $_REQUEST a la place de $_POST, et rassuré par le fait que mes communications fonctionnent avec le $_REQUEST, j'ai retenté l'experience en remplacant de nouveau tous les $_REQUEST par des $_POST, et ça fonctionne. Mon probleme ne venait donc pas de là, je ne sais pas exactement quelle erreur j'avais comis, mais bon j'me suis dit que ça pourrait vous interresser d'avoir ce mystère du $_REQUEST dissipé.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)