IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Envois de données par formulaire


Sujet :

Flex

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Qatar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 489
    Points : 334
    Points
    334
    Par défaut Envois de données par formulaire
    Bonsoir,

    Voici la nouvelle situation où je me trouve.

    J'ai mis sur mon site une page "Contact" si un utilisateur veut m'envoyer un mail...OK

    J'ai mis 3 champs : Nom, Mail et Commentaire avec un boutton envoyer.

    Je n'utilise aucune BD pour utilisé PHP ou serveur web (Apache) du coup je sais pas vraiment comment je devrais faire.

    Avec php c'est assez simple avec la fonction mail(), mais avec flex je n'ai vraiment aucune idée même pas avec google ...

    Merci.

    PS: Quand j'ai crée mon projet je l'ai créer sans serveur web. C-à-d Application server web = None

  2. #2
    Membre habitué
    Homme Profil pro
    Tech Lead
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Tech Lead
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 169
    Points
    169
    Par défaut
    Hello,

    Pour commencer, Flex, n'est pas un langage mais un framework ActionScript3. Tu utilises du MXML pour décrire ton application, mais quand tu fais ton export, ton MXML est transformé en AS3 pour qu'il puisse être lu dans le flash player.
    La conséquence de tout ça est qu'à la fin tu as un fichier swf qui est lu par le client.
    Donc tu ne peux pas demander à Flex (donc le flash player) d'envoyer des mails. Ce que tu peux peut être faire c'est faire un lien de type "mailto:" et le navigateur dans lequel tu exécute le player devrait être capable de lancer le client mail de l'utilisateur (j'ai jamais essayé...).
    Si tu veux garder ton système de formulaire de contact qui envoi un mail, tu es obligé de passer par une phase serveur. La cinématique va être la suivante :
    1. L'utilisateur saisi les données dans le formulaire
    2. lorsqu'il clique sur le bouton "soumettre", les infos sont envoyées au serveur en utilisant une des techniques suivantes : HTTP (POST ou GET), Webservices, ObjectRemoting.
    3. Ton script côté serveur (visiblement tu as des affinités avec PHP donc il sera vraisemblablement en PHP) récupère ces infos.
    4. Fais une passe supplémentaire de vérification de tes données d'entrée (parce que dans le fond tu ne peux pas être sûr que c'est bien ton client Flash qui te les envoient...)
    5. Ton script fais l'envoi de mail avec le mail() PHP qui va bien.

    Voilà normalement tu devrais mieux comprendre ce que tu fais.
    Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes.
    Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..."

  3. #3
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    Salut,

    tu peux le faire de différentes facons. Soit en passant par du javascript avec ExternalInterface, soit en passant par une solution serveur (php par exemple) avec une simple requête HTTP(HTTPRequest) ou tu passes en paramètres les infos pour l'envoi du mail depuis php.

    Voila tu as toutes les billes avec les mots clés pour trouver tout ce qu'il te faut pour avancer

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  4. #4
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Bonsoir

    Je viens "appuyer" la suggestion de Jim_Nastiq, mais en proposant l'option de l'utilisation de HTTPService.

    Simplement parce que je l'utilise régulièrement depuis mes formulaires Flex, et sans aucuns soucis.
    ==> Et avec la fonction "mail" spécifique à php.

    Exemple dans ton cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <mx:HTTPService id="envoiMail" url="http://www.ton-site.com/ton-repertoire/ton-fichier-mail.php" useProxy="false" method="POST">
         <mx:request xmlns="">
         <Nom>{Nom.text}</Nom>
         <Mail>{Mail.text}</Mail>
         <Commentaire>{Commentaire.text}</Commentaire>
         </mx:request>
         </mx:HTTPService>
    Là où il convient d'être vigilant, c'est de bien indiquer dans l'url, l'adresse absolue de ton script mail PHP, à défaut, celà ne fonctionnera pas.

    Je précise qu'un simple fichier swf renvoie sans probléme les variables passées en POST au navigateur. (Et même sans utiliser un fichier de base index)
    Celles-ci ne sont traitées que si le chemin qui doit exploiter ces variables POST est bien défini...en l'occurence, l'adresse absolue du fichier mail.php
    Ensuite, c'est php qui prend le relais... et remplit son job .
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Qatar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 489
    Points : 334
    Points
    334
    Par défaut
    Voilà ce que j'ai fait avec votre aide et des recherches sur le web :

    D'abord voici mon code PHP (Simple pour tester)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
            $senderName = $_POST['senderName'];
            $senderEmail =  $_POST['senderEmail'];
            $sendToEmail = "aaaaaaa@gmail.com";
            $subject = $_POST['emailSubject'];
            $emailMessage = $_POST['emailMessage'];
     
            $recipient = "$sendToEmail";
     
            $headers = "From: $senderEmail ";
            $message = "From: $senderName, \nEmail Address: $senderEmail\nSubject: $subject\n\nMessage: $emailMessage";
            $message = stripslashes($message);
            mail($recipient, $subject, $message, $headers)
    ?>
    Je le met dans le fichier src à côté de ma page mxml...OK

    Après dans ma page mxml je met un tag HTTPService comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mx:HTTPService id="emailService" url="mail.php" method="POST" resultFormat="xml" result="emailResult()" useProxy="false"/>
    Puis dans mon bouton "send" j'appel la fonction pour envoyer ==>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mx:Button label="Send" click="sendMail()" x="138" y="274"/>
    Après je définis le code ActionScript pour gérer tout ça (je l'ai trouvé sur le web)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
        <mx:Script>
    	<![CDATA[
    		import mx.events.ValidationResultEvent;
    		import mx.controls.Alert;
     
    		private function sendMail():void{
    			var _senderName:String = senderName.text;
    	        var _senderEmail:String = senderEmail.text;
    	        var _emailMessage:String = emailMessage.text;
    	        var _emailSubject:String = emailSubject.text;
     
    			var evValidMail:ValidationResultEvent = mailValidator.validate();
    			var evValidName:ValidationResultEvent = nameValidator.validate();
    			var evValidMessage : ValidationResultEvent = mailValidator.validate();
     
    			if (evValidMail.type == ValidationResultEvent.VALID
    			&& evValidName.type == ValidationResultEvent.VALID
    			&& evValidMessage.type == ValidationResultEvent.VALID){
    				emailService.send({senderName: _senderName, senderEmail:_senderEmail, emailSubject:_emailSubject, emailMessage: _emailMessage});
    			}
    			else{
    				resultLabel.text="There are Form errors";
    				resultLabel.setStyle("styleName", "invalid");
    			}
    		}
     
    		private function emailResult():void{
                Alert.show("Thank you for your submission ");
                clearForm();
    		}
     
    		private function clearForm():void{
    			resultLabel.text="";
    			emailSubject.text="";
    			emailMessage.text="";
    		}
     
    	]]>
    </mx:Script>
    Si je valide en faisant une erreur quelconque ça me dit qu'il y a une erreur et quand je valide ça me dit que le message à bien été envoyé alors que je ne reçois rien ! (ça veut dire que les testes du script sont bien fait)

    Je suis aller sur mon fichier PHP pour déboguer et j'ai mis une erreur de syntaxe dedans. Quand je recompile pour tester, ça me dit toujours que le message était bien envoyé et il ne détecte aucune erreur PHP, donc j'en conclu qu'il ne traite même pas le fichier PHP ?!

  6. #6
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Bonjour

    Comme souligné dans ma réponse, il te faut mettre le chemin absolu du fichier php qui traite le mail.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mx:HTTPService id="emailService" url="http://www.ton-site.com/ton-repertoire/ton-fichier-mail.php"...................
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  7. #7
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Qatar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 489
    Points : 334
    Points
    334
    Par défaut
    heuu le chemin absolu pour moi c'est genre c:/wamp/www/....

    Je peux pas mettre de lien http !

    Et j'essaye le lien absolu avec c:/wamp/..../mail.php et ça marche pas.

  8. #8
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Tu devrais essayer sur un serveur distant. (www)
    En déposant juste le fichier php et ton swf.
    Pour moi c'est fonctionnel, mais en localhost, je n'ai pas testé.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  9. #9
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Qatar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 489
    Points : 334
    Points
    334
    Par défaut
    Je viens de tester avec cette URL :

    http://localhost/MonProjet-debug/php/mail.php

    Il ne détecte pas l'erreur que je met dans mon fichier PHP.

    Je vois aussi qu'il y a le fichier mail.php dans le serveur WAMP ainsi que dans le workspace de Flex...

Discussions similaires

  1. [AJAX] Envoi des données du formulaire par POST
    Par Knight.Solidary dans le forum AJAX
    Réponses: 5
    Dernier message: 06/08/2012, 06h50
  2. Envoi de données par formulaire
    Par infoad31 dans le forum Langage
    Réponses: 1
    Dernier message: 19/04/2011, 13h01
  3. Envoie de données par gsm
    Par strate01234 dans le forum Java ME
    Réponses: 1
    Dernier message: 30/01/2007, 21h23
  4. [VB6]Envoi de données par connexion WiFi
    Par Valeriegerard dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/05/2006, 18h18
  5. [MySQL] Envoi d'images par formulaire et post-traitement
    Par mathieu7497 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/04/2006, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo