Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[RESOLU]aide pour la création d'un formulaire[php]


Messages recommandés

Posté(e) (modifié)

Bonjour Greywolf, Dylav

 

<form method="post" action="traitement.php">

 

le fichier traitement.php est-il au même niveau que commander.htm ?

oui, le fichier est au même niveau.

mon formulaire s'affiche. J'ai la réponse d'erreur après "envoyer"

J'ai mis mon mail comme mail de référence et je ne reçois aucune information non plus.

 

 

Oups... j'avais oublié qu'il s'agissait d'un formulaire. Il faut dire que mes ennuis avec mon FAI me prenaient tellement la tête que je réfléchissait plus difficilement ! Excuse-moi, Manly :P

 

ouffff tu me soulages, je te lisais et je n'arrivais pas à comprendre ce que je lisais.

Donc ca va, suis pas si nulle que je le pensais :P quoique j'aurais du comprendre quand même.

 

merci de vous pencher sur mon problème

Modifié par manly

Posté(e)

c'est bizarre que le serveur renvoie une erreur 404 si le fichier est bien présent à l'endroit où il faut :P

 

tu as vérifié la casse du nom du fichier? (majuscules/minuscules)

Posté(e) (modifié)

Merci Greywolf,

 

J'ai compris pourquoi j'avais cette erreur.

Comme je le disais plus haut, je travaille sur mon site qui a encore été fait sous frontpage.

Ma page de formulaire, elle est en xtml.

J'avais inséré ma page dans une page de frontpage.

 

Je viens de faire différement.

J'ai fait un lien vers ma page xml

Je n'ai plus le message d'erreur.

Mon affichage est correct.

 

je réedite et modifie au fur et à mesure de mes test, de mes résultats et de mes recherches.

Ici je ne trouve pas:

Parse error: parse error, unexpected '=' in /home/sites/site21/web/formulaire.php on line 55

je vous mets la ligne 54,55et 56

$mail_corps = "Message de : $civilité $nom\n";
$mail_corps . = "Adresse : $adresse, $codepostal $ville, $pays\n";
$mail_corps . = "Date du spectacle : $date";

serait-ce que la virgule soit obligatoire entre code postal et ville?

 

suivant le tutorial que je suis, il y a plusieurs endroits où la , n'est pas demandée

Modifié par manly
Posté(e)

le . est l'opérateur de concaténation en php. Apparemment ton message d'erreur se paint du = après le signe de concaténation.

$mail_corps = "Message de " . $civilité . " " . $nom . "\nAdresse : " . $adresse . "," . $codepostal . " " . $ville . "," .  $pays . "\nDate du spectacle : " . $date . "\n";

 

ça marche pas comme ça?

Posté(e) (modifié)

Merci Greywolf,

je vais essayer

Je reviens dire quoi.

 

Voilà, là ça passe.

Ce qui est bizare, c'est que

$email_entete accepte les =

 

maintenant mon soucis est la réponse affichée.

Votre demande a bien été prise en compte.une erreur est survenue lors de l'envoi du formulaire par email

et en effet, je n'ai pas recu de mail.

//envoi du mail
if
(mail (MAIL_DESTINATAIRE,MAIL-SUJET,$mail_corps,$mail_entete))
{
//le mail est bien expédié
echo $msg_ok;
}
else echo "Nous vous répondrons très prochainement, merci de votre visite et à très bientôt.";
{
//Le mail n'est pas expédié
echo 'une erreur est survenue lors de l\'envoi du formulaire par email';

$retval = mail("manly@XXXXXX.be",$sujet,$message,$headers);
}?>

Donc où c'est que cal bloque?

 

Je viens de me rendre compte que je n'ai pas fait exactement ce que tu m'as dit:

//préparation du corps du mail
$mail_corps = "Message de : $civilité $nom\n";
$mail_corps . "Adresse : $adresse, $codepostal $ville, $pays\n";
$mail_corps . "Date du spectacle : $date";
$mail_corps . "Sons et lumières : $sonlumière";
$mail_corps . "Type spectacle souhaité: $TypeSpectacle";
$mail_corps . "Type de salle: $TypeSalle";
$mail_corps . "Type de fête : $TypeFete";
$mail_corps . "Nombre de spectateurs : $nbre";
$mail_corps . "Age des spectateurs : $age";
$mail_corps . "Ville ou se deroulera le spectacle :$ville";
$mail_corps . "Budget : $budget";

 

Penses-tu que l'erreur vienne de là?

 

edit: voilà, c'est modifié.

Me reste à traiter la condition d'erreur de rempllissage et de l'envoi ou non du mail.

Modifié par manly
Posté(e)

pour concaténer des chaines de caractères à une variable string déjà existante utilise

$mail_corps .= "Date du spectacle: " . $date;

 

.= reprends $mail_corps et lui rajoute ce qui est derrière le signe =

Posté(e) (modifié)

Merci greywolf. :P

 

Je réedite au fur et à mesure de mes recherches et solutions.

Je reçois bien maintenant le formulaire sur ma boite mail.

Encore quelques petits soucis.

 

Le premier pays, celui du domicile est toujours celui du spectacle renseigné, pourtant j'ai vérifié, l'un est pays, l'autre pays_spect.(résolu, ce :P de frontpage, me mettait toujours la page htm, bien que ce soit celle en xtml qui était demandée)

 

En réponse sur ma page web, j'ai le message de remplissage correct qui s'affiche :P

exepté un petit détail:

quand je fais un oubli, j'ai le message d'erreur qui s'affiche, suivi du message d'envoi correct.

Le mail m'est envoyé alors qu'il ne devrait pas.

voici mon code complet

$msg_erreur = "Erreur. 
Veuillez faire précédent dans votre navigateur pour revenir au formulaire :

Les champs suivants doivent être obligatoirement remplis
";
$msg_ok = "Votre demande a bien été prise en compte. 

Nous vous répondrons très prochainement, merci de votre visite et à très bientôt. 

Vous pouvez fermer la fenêtre";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','manly@patrickhubert.be'); // remplacer par votre email
define('MAIL_SUJET','Devis de spectacle');
// vérification des champs
if (empty($_POST['nom']))
$message .= "Vous avez oublié d'entrer votre nom
";
if (empty($_POST['adresse']))
$message .= "Vous avez oublié d'entrer votre adresse
";
if (empty($_POST['codepostal']))
$message .= "Vous avez oublié d'entrer votre code postal
";
if (empty($_POST['ville']))
$message .= "Vous avez oublié d'entrer votre ville
";
if (empty($_POST['mail']))
$message .= "Vous avez oublié d'entrer votre adresse mail
";
if (empty($_POST['date']))
$message .= "Vous avez oublié d'entrer votre date prévue pour le spectacle
";
if($_POST['sonslumieres']=="f") 
$message .="Vous avez oublié de nous signaler s'il fallait une sono ou des spots
";
if($_POST['TypeSpectacle']=="f") 
$message .="Vous avez oublié d'entrer le type de spectacle souhaité
";
if($_POST['typeSalle']=="f") 
$message .="Vous avez oublié d'entrer le type de salle
";
if($_POST['TypeFete']=="f") 
$message .="Vous avez oublié d'entrer le type de fête souhaitée
";
if (empty($_POST['nbre']))
$message .= "Vous avez oublié d'entrer le nombre de spectateurs
";
if (empty($_POST['age']))
$message .= "Vous avez oublié d'entrer l'age de votre public
";
if (empty($_POST['ville_s']))
$message .= "Vous avez oublié d'entrer la ville où doit se dérouler le spectacle
";
if (empty($_POST['ville']))
$message .= "Vous avez oublié d'entrer votre ville
";
if (empty($_POST['budget']))
$message .= "Vous avez oublié d'entrer le budget dont vous disposez
";
// si un champ est vide, on affiche le message d'erreur
if (strlen ($message) > strlen ($msg_erreur)) 
{
echo $message;}
//sinon c'est ok
else {

foreach($_POST as $index => $valeur) {
$index = stripslashes(trim ($valeur));
}}
//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
            ."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";

//préparation du corps du mail
$mail_corps = "Message de : $civilité $nom\n";
$mail_corps .= "Adresse : $adresse, $codepostal $ville, $pays\n";
$mail_corps .= "Mail : $mail\n";
$mail_corps .= "Telephone :$telephone\n";
$mail_corps .= "Joindre par :$reponse\n";
$mail_corps .= "Horaire de contact :$horaire\n";
$mail_corps .= "Date du spectacle : $date\n";
$mail_corps .= "Sons et lumières : $sonslumieres\n";
$mail_corps .= "Type spectacle souhaité: $TypeSpectacle\n";
$mail_corps .= "Type de salle: $typeSalle\n";
$mail_corps .= "Type de fête : $TypeFete\n";
$mail_corps .= "Nombre de spectateurs : $nbre\n";
$mail_corps .= "Age des spectateurs : $age\n";
$mail_corps .= "Ville ou se deroulera le spectacle :$ville_s\n";
$mail_corps .= "Pays ou se deroulera le spectacle :$pays_spec\n";
$mail_corps .= "Budget : $budget\n";
$mail_corps .= "Renseignements : $renseignements";

// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {

 //Le mail est bien expédié
 echo $msg_ok;
} else {

 //Le mail n'a pas été expédié
 echo 'Une erreur est survenue lors de l\'envoi du formulaire par email';
}


?>

si quelqu'un pouvait me dire où ça coince ?

 

En tout cas, ça avance super, je suis contente :P

Modifié par manly
  • Modérateurs
Posté(e)
$mail_corps = "Message de : $civilité $nom\n";
$mail_corps . = "Adresse : $adresse, $codepostal $ville, $pays\n";
$mail_corps . = "Date du spectacle : $date";

Pour concaténer des chaînes de caractères à une variable string déjà existante, utilise
$mail_corps .= "Date du spectacle: " . $date;

.= reprends $mail_corps et lui rajoute ce qui est derrière le signe =

Juste un détail pour compléter ce que t'indiquait Greywolf : ce qui ne marchait pas dans ton code, c'est que tu avais mis un espace entre le point et le signe égal, de sorte qu'il ne reconnaissait pas l'opérateur de concaténation .= :P

Posté(e)

Merci Dylav et Greywolf. :P

Mon code fonctionne à présent. :P

Celui qui est mis dans mon codebox.

Il me reste juste le soucis que lorsqu'il est mal rempli, si j'ai bien le message d'erreur qui s'affiche, j'ai malgré tout le message de confirmation d'envoi qui est affiché aussi, et j'ai malgré tout le mail qui m'est envoyé. :P

C'est le seul soucis que je rencontre encore.

Pour le reste, tout est nickel.

Tant le sujet que le corps du mail.

Je suppose que le problème se trouve dans les dernières lignes, mais je ne trouve pas :P , c'est sans doute encore un if, then, else qui me pose soucis.

Posté(e)

else {

foreach($_POST as $index => $valeur) {
$index = stripslashes(trim ($valeur));
}}

 

ta boucle else se termine au deuxième }.

et l'envoi de mail se fait après et est donc exécuté quelque soit le résultat du résultat du test if ($message > $msg_erreur)

 

je pense qu'en enlevant une accolade fermante à ce niveau et en la déplaçant tout à la fin, ça devrait le faire

echo 'Une erreur est survenue lors de l\'envoi du formulaire par email';
}
}

 

En indentant correctement ton code ou en utilsant un bon éditeur de texte qui te surligne les accolades/parenthèses ouvrantes-fermantes, tu reliras plus facilement ton code

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...