J'ai essayé ce tutoriel ( http://wiki.mediabox.fr/tutoriaux/flash/formulaire_flash_php ) pour faire un formulaire Flash/php:
Il fonctionne parfaitement quand je le laisse tel quel, mais si j'ajoute une ComboBox il devient complètement inactif (le bouton "envoyer" ne déclenche aucune action: ni de message d'erreur, ni de réussite, donc pas de mail...). Regardez: http://obscurantisorder.free.fr/kompersonne/labo/formulaireTEST.swf
Je dois faire une erreur (ou DES erreurs!) dans le code (faut dire que j'y vais un peu à tâtons parce que je débute). Ça fait 3 jours que je cherche sur le net et aucune solution ne fonctionne... Quelqu'un pourrait m'aider svp?
Merci!
Voici mon code AS:
import mx.controls.TextInput;
import mx.controls.TextArea;
import mx.controls.CheckBox;
import mx.controls.ComboBox;
import mx.controls.Button;
// On référence les occurences de compos pour profiter du typage strict
var tiNom:TextInput = this.nom_ti;
var tiPrenom:TextInput = this.prenom_ti;
var tiEmail:TextInput = this.email_ti;
var taCommentaire:TextArea = this.commentaire_ta;
var taSortie:TextArea = this.sortie_ta;
var cbLettre:CheckBox = this.lettre_cb;
var cbPrestation1:ComboBox = this.prestation1_cb;
var mcEnvoyer:Button = this.envoyer_mc;
// Initialisation des compos
taSortie["depthChild0"]._visible = false; // hack pour remplacer les 4 lignes ci-dessus
taSortie.setStyle("color", "0xB13501");
taSortie.setStyle("fontStyle", "italic");
taSortie.label.selectable = false;
cbLettre.label = "Recevoir la lettre d'information";
cbPrestation1.label = "logo,charte";
function recepbox()
{
prestation1 = choix.getValue();
trace(prestation1);
}
// Ordres de tabulation
tiNom.tabIndex = 1;
tiPrenom.tabIndex = 2;
tiEmail.tabIndex = 3;
cbLettre.tabIndex = 4;
taCommentaire.tabIndex = 5;
mcEnvoyer.tabIndex = 6;
cbPrestation1.tabIndex = 7;
var nom:String;
var prenom:String;
var email:String;
var recevoirLettre:Boolean;
var prestation1:Boolean;
var commentaire:String;
// Fonctions outils
function afficherEnSortie(pChaine:String):Void
{
taSortie.text = pChaine;
}
function reinitFormulaire():Void
{
tiNom.text = tiPrenom.text = tiEmail.text = taCommentaire.text = "";
cbLettre.selected = false;
cbPrestation1.selected = false;
}
function validerFormulaire ():String
{
nom = tiNom.text;
prenom = tiPrenom.text;
email = tiEmail.text;
commentaire = taCommentaire.text;
recevoirLettre = cbLettre.selected;
var erreurs:String = "";
if (nom == "") erreurs += "Merci de remplir le champ 'nom'" + newline;
if (prenom == "") erreurs += "Merci de remplir le champ 'prénom'" + newline;
if (email == "") erreurs += "Merci de remplir le champ 'email'" + newline;
else
{
var atIndex:Number = email.indexOf("@");
var dotIndex:Number = email.indexOf(".", atIndex);
trace(atIndex + " " + dotIndex);
if (atIndex == -1 || dotIndex == -1 || dotIndex - atIndex <= 1)
erreurs += "L'email n'est pas valide" + newline;
}
return erreurs;
}
function formerMessageText ():String
{
var message:String = "Formulaire :";
message += "Origine : " + this._url + "\r\n";
message += "Nom : " + nom + "\r\n";
message += "Prénom : " + prenom + "\r\n";
message += "Adresse email : " + email +"\r\n";
message += "choix :" + prestation1 + "/r/n";
if (recevoirLettre)
message += "Personne souhaitant recevoir la lettre d'information.\r\n";
if (commentaire != "")
message += "Commentaire :\r\n";
message += commentaire;
if (prestation1)
message += "logo,charte.\r\n";
return message;
}
function formerMessageHtml ():String
{
var message:String = "<html><head><style type='text/css'> p{font: 12px Arial} </style></head><body>";
message += "<h4>Formulaire : </h4>";
message += "<p>Origine : " + this._url + "</p>";
message += "<p>Nom : " + nom + "<br />";
message += "Prénom : " + prenom + "<br />";
message += "Adresse email : <a href='mailto:" + email + "'>" + email +"</a></p>";
message += "choix : " + prestation1 + "<br />";
if (recevoirLettre)
message += "<p>Personne souhaitant recevoir la lettre d'information.</p>";
if (commentaire != "")
message += "<p><u>Commentaire :</u><br />";
message += commentaire;
message += "</p></body></html>";
return message;
}
function envoyerMail ():Void
{
mcEnvoyer.enabled = false;
var envoyeur:LoadVars = new LoadVars();
var receveur:LoadVars = new LoadVars();
envoyeur.sujet = "Formulaire";
envoyeur.messageText = formerMessageText ();
envoyeur.messageHtml = formerMessageHtml ();
envoyeur.expediteur = prenom + " " + nom;
envoyeur.mailReponse = email;
receveur.onLoad = onMailEnvoye;
envoyeur.sendAndLoad("formulaireTEST.php", receveur, "POST");
afficherEnSortie("Envoi en cours...");
}
function onMailEnvoye (pSuccess:Boolean):Void
{
mcEnvoyer.enabled = true;
if (!pSuccess)
{
afficherEnSortie("Problème avec le script PHP.");
}
else if (this.erreurPHP == "")
{
afficherEnSortie("L'envoi s'est terminé avec succès.");
reinitFormulaire();
}
else
{
afficherEnSortie("Erreurs PHP : \n" + this.erreurPHP);
}
}
Et mon code dans la page php:
<?php
function decoder($texte){
$texte = utf8_decode($texte); // converti en iso-8859-1
$texte = stripslashes($texte); // élimine les anti-slashs d'échappement
$texte = nl2br($texte); // converti les retours en <br />
$texte = trim($texte); // élimine les '\n', '\r', '\t' etc
return $texte;
}
$erreurPHP="";
/* Paragraphe à decommenter pour tester le script php seul, sans le fla
$_POST['sujet'] = 'formulaire Test';
$_POST['messageHtml'] = '<html><body>Salut<br /> mon cher<br /><br />Bye</body></html>';
$_POST['messageText'] = "Salut mon cher Bye";
$_POST['expediteur'] = "expediteur@fai.fr";
$_POST['mailReponse'] = "expediteur@fai.fr";
*/
if(isset($_POST['sujet']))$sujet = $_POST['sujet'];
else $erreurPHP .= "Variable 'sujet' non transmise\n";
if(isset($_POST['messageHtml']))$messageHtml = $_POST['messageHtml'];
else $erreurPHP .= "Variable 'message' non transmise\n";
if(isset($_POST['messageText']))$messageTexte = $_POST['messageText'];
else $erreurPHP .= "Variable 'message' non transmise\n";
if(isset($_POST['expediteur']))$expediteur = $_POST['expediteur'];
else $erreurPHP .= "Variable 'expediteur' non transmise\n";
if(isset($_POST['mailReponse']))$mailReponse = $_POST['mailReponse'];
else $erreurPHP .= "Variable 'mailReponse' non transmise\n";
if($erreurPHP != "") echo utf8_encode("erreurPHP=".$erreurPHP);
else
{
$to = "anais@kom-personne.com";
$sujet = decoder($sujet);
$expediteur = decoder($expediteur);
$messagehtml = decoder($messageHtml);
$messageTexte = utf8_decode($messageTexte);
//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
//-----------------------------------------------
$frontiere = '-----=' . md5(uniqid(rand()));
//-----------------------------------------------
//HEADERS DU MAIL
//-----------------------------------------------
$headers = 'From: '.$expediteur.' <'.$mailReponse.'>'."\n";
$headers .= 'Return-Path: <'.$mailReponse.'>'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"'."\n";
$headers .= 'Content-Type: text/html; charset=iso-8859-1";
$headers .= 'Content-Transfer-Encoding: 8bit';
//-----------------------------------------------
//MESSAGE TEXTE
//-----------------------------------------------
$message = "This is a multi-part message in MIME format\n\n";
$message = "--$frontiere\n";
$message .= "Content-Type: text/plain; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $messageTexte."\n\n";
//-----------------------------------------------
//MESSAGE HTML
//-----------------------------------------------
$message .= "--$frontiere\n";
$message .= "Content-Type: text/html; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $messageHtml."\n\n";
$message .= "--$frontiere--\n";
$mail_OK = mail($to, $sujet, $message, $headers) ;
if (!$mail_OK)
{
$erreurPHP .= "Problème lors de l'envoi du mail";
}
echo utf8_encode("erreurPHP=".$erreurPHP);
}
?>
Trouvez des réponses à vos questions sur la création de sites web, le référencement et les meilleures pratiques pour gérer un site. Échangez avec d'autres webmasters passionnés pour améliorer vos compétences en ligne et optimiser vos projets de site web.