Aide à une débutante en "php"

Résolu
Bonjour,
Tout d'abord un grand merci à votre forum qui m'a beaucoup aidée. Je précise qu'à part le "html" je ne connais rien de rien au "php". Je me suis donc lancée, J'ai fait mon "form sur ma page index" et j'ai fait ma page "formmail" en php. Quand je lance wamp (que j'ai installé sur mon ordi) et que je tape "localhost" ma page s'ouvre mais quand je simule un message venant de l'extérieur je reçois bien un mail mais envoyé de "moi" à "moi" et pas de sujet, pas de commentaires...alors que j'ai rempli ces zones. Je ne sais pas si vous allez me comprendre, est-ce que je suis loin du but ou est ce que j'ai tout faux ??? Si vous pouvez m'aider, d'avance merci.
Vega32
Configuration: Windows Vista Internet Explorer 8.0

19 réponses

  1. Bonjour à tous,
    Encore une petite question : mon formulaire fonctionne très bien mais quand je fais rentrer les mails des expéditeurs je ne peux cliquer sur répondre car je "me" réponds, je suis obligée de cliquer sur l'adresse mail de l'expéditeur pour lui répondre, est-ce normal ? y-a-il une solution et, avez vous compris ma question ?
    d'avance merci
    Vega
    1. Bonjour Camuke et encore un grand merci car je viens de tester en local et ça marche :):):) Maintenant il me faut l'accord du grand chef du site concerné pour l'installer mais en attendant j'ai 2 autres sites où j'ai bien l'intention de le faire. Je pense que toutes tes infos seront utiles à d'autres, bonne continuation sur "ccm" et peut être à bientôt si jamais j'avais encore besoin de ton aide dans ce domaine ?
      Vega
      1. Je reprend le tout avec le code que j'ai a disposition:

        Dans la page de ton formulaire tu doit avoir :

        <script type="text/javascript">
        function valider(){
          if(document.contact.email.value != "" && document.contact.realname.value != "" && document.contact.telephone.value != "") {
              // les données sont ok, on peut envoyer le formulaire    
              return true;
          }
          else {
            // sinon on affiche un message
            alert("Merci de remplir tout les champs obligatoires");
            // et on indique de ne pas envoyer le formulaire
            return false;
          }
        }
        </script>
        
        <form method="post" action="formmail.php" name="contact" onsubmit="return valider()">
        	<input name="subject" value="formmail" type="hidden">
        	<table>
        		<tbody>
        			<tr>
        				<td>Votre Nom:</td>
        				<td><input name="realname" size="30" type="text"></td>
        			</tr>
        				<tr>
        				<td>Votre Email:</td>
        				<td><input name="email" size="30" type="text"></td>
        			</tr>
        			<tr>
        				<td>Votre Telephone:</td>
        				<td><input name="telephone" size="30" type="text"></td>
        			</tr>
        			<tr>
        				<td>modele bmw:</td>
        				<td><input name="modele" size="30" type="text"></td>
        			</tr>
        			<tr>
        				<td>Sujet:</td>
        				<td><input name="title" size="30" type="text"></td>
        			</tr>
        			<tr>
        				<td colspan="2">votre message:<br>
        				<textarea cols="50" rows="6" name="comments"></textarea></td>
        			</tr>
        		</tbody>
        	</table>
        	<br>
        	<input value="Envoyer" type="submit"> -
        	<input value="Annuler" type="reset">
        </form> 
        


        Et dans ton fichier formmail.php:

        <?php
        if(isset($_POST['email']) && isset($_POST['telephone']) && isset($_POST['realname'])) {
        	$TO = "xxxxx@xxxx.fr";
        	$h = "From: " . $TO;
        	while (list($key, $val) = each($_POST)) {
        	$message .= "$key : $val\n";
        	}
        	mail($TO, $subject, $message, $h);
        	header("Location:merci.html");
        }else{
        	echo 'Tout les champs n\'ont pas ete correctement remplit';
        }
        ?>
        
        1. bonjour et merci pour la rapide réponse,
          on va me prendre pour une truffe mais je ne sais pas où mettre le javascript dans ma page d'accueil, je viens d'essayer ainsi que le formmail modifié et là ça ne marche plus du tout. Je croyais que ça allait être simple mais là je bute et puis je te renvoie mon form car c'est peut être à cause de la redirection vers la page de remerciement ??? merci d'avance

          <?php
          $TO = "xxxxx@xxxx.fr";

          $h = "From: " . $TO;

          $message = "";

          while (list($key, $val) = each($_POST)) {
          $message .= "$key : $val\n";
          }

          mail($TO, $subject, $message, $h);

          Header("Location: http://xxxx.fr/merci.html");
          // Rediriger vers la page de remerciement
          header("Location:merci.html");

          ?>
          1. l'ideal c'est les 2!!

            D'abord en javascript:
            le script :
            <script type="text/javascript">
            function valider(){
              if(document.contact.email.value != "") {
                  // les données sont ok, on peut envoyer le formulaire    
                  return true;
              }
              else {
                // sinon on affiche un message
                alert("Saisissez le prénom");
                // et on indique de ne pas envoyer le formulaire
                return false;
              }
            }
            </script>
            le formulaire :
            <form method="post" action="formmail.php" name="contact" onsubmit="return valider()">
            //Liste des champs
            </form>
            
            
            Le javascript est superbe pour sa car tu envoie pas le formulaire le tant que tout est pas remplit mais l'utilisateur peut le désactive dans son navigateur donc une petite vérification coté serveur (php) est nécessaire. la réponse est déjà en partie écrite d'ailleurs car tu as dans le code:
            if(isset($_POST['email'])): cela test si tu recoit le champs email, tu as juste a rajouter les autres, du genre:
            <?php
            if(isset($_POST['email']) && isset($_POST['nom'])) {
               //Tout est bien remplit
            }else{
             // Un petit message pour avertir
            }
            ?>
            


            Voila, a intégrer et terminer pour ton formulaires.
            1. Bonjour,
              c'est re-moi. Mon formulaire fonctionne, merci encore à Camuke . Ce formulaire est peut être pas très "pro" mais bon dans l'immediat ça marche. Maintenant je voudrais savoir ce que je peux rajouter en "javascript" ou en "php" pour obliger le visiteur à remplir certains champs comme : le nom, l'email et le n° de telephone avant de valider.
              Merci pour votre aide
              Vega
              1. merci merci merci, ça marche !!!! oh, y'aura probablement des bugs et faut que j'améliore mais là déjà c'est super !!!!
                Bonne soirée à tous
                vega
                1. bon ben je vais essayer et je te dirai si ça marche, mais d'abord une pause et puis je m'y remets :):)
                  Vega
                  1. Oui tu met le nom de la page que tu veux.
                    Comment sa marche, aucune idée....
                    Comme dans beaucoup de langage, PHP possède des fonctions prédéfinit que les humbles codeur comme nous peuvent utiliser, le code derrière je le connais pas et très honnêtement, je pense que, comme tout le monde , je m''en moque complètement.

                    En français la fonction headers permet de dire a ton navigateur internet d'aller voir la page indiqué.
                    1. juste ça ? en remplaçant "mapage.php" par "la mienne.php" ??? alors là je comprends pas comment le visiteur va être redirigé vers une page de remerciement ?? tu peux m'expliquer stp, merci. Vega
                      1. j'ai peur de tester ton nouveau code et de ne plus y arriver car là ça y est grâce à toi voilà ce que j'ai reçu après l'envoi du formulaire :
                        sujet :
                        Nom : BERNARD
                        email : mtb32@laposte.net
                        telephone : 0000000000
                        modele_bmw : serie 5 tant qu'à faire !!!
                        message : Je fais un essai et génial on dirait que ça marche maintenant je voudrais que l'expéditeur retombe sur une page de remerciement.


                        Je n'avais rien rempli dans la case "sujet" donc normal qu'il n'y ait rien.

                        et comme je le dis dans le message, comment faire pour rediriger le visiteur sur une page du style "merci message envoyé, nous vous répondrons dès que possible" ???
                        Est-ce que c'est simple ??
                        Merci
                        1. C'est sur que sa affiche se genre de chose, dans ton code ton message est crée par une boucle qui met à la suite dans le message le nom de la variable et sa valeur.

                          Si tu veux une mini présentation, le code ressemble plus a sa:
                          <?php
                          if(isset($_POST['email'])) {
                          $TO = "cedricbernard@stationbm95.fr";
                          
                          $h = "From: " . $TO;
                          $message_html='<html>
                          					<head>
                          						<title>Titre</title>
                          					</head>
                          					<body>	Nom : '.$_POST['realname'].' <br>
                          							Email : '.$_POST['email'].' <br>
                          							Telephone : '.$_POST['telephone'].' <br>
                          							modele bmw : '.$_POST['modele'].' <br>
                          							sujet : '.$_POST['title"'].' <br>
                          							message : '.$_POST['comments'].' <br>
                          					</body>
                          				</html>'; 
                          
                          $message = "";
                          $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
                          $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
                          $message .= $message_html."\n\n"; 
                          
                          mail($TO, $_POST['title'], $message, $h);
                          
                          }
                          ?> 
                          1. j'ai mis ça :
                            <?php
                            $TO = "cedricbernard@stationbm95.fr";

                            $h = "From: " . $TO;

                            $message = "";

                            while (list($key, $val) = each($_POST)) {
                            $message .= "$key : $val\n";
                            }

                            mail($TO, $subject, $message, $h);

                            Header("Location: http://stationbm95.fr");

                            ?>
                            et voilà ça marche, mais sur le mail je reçois ça :

                            subject : formmail
                            realname :
                            email : mtb32@laposte.net
                            telephone :
                            modele :
                            title :
                            comments : essai

                            J'ai déjà fait des progrès grâce à vous !!!! J'espère que je vais y arriver :)
                            1. Merci d'abord pour l'aide. Alors j'ai essayé, maintenant je reçois le mail mais avec ça dans le texte :
                              subject : formmail<br>realname : <br>email : <br>telephone : <br>modele : <br>title : <br>comments : esai<br>

                              J'ai du oublié quelquechose en route, des espaces en trop en moins ???? et ce "php" me prend la tête, je n'y comprends rien, c'est vraiment pas parlant contrairement au "html".
                              Vega32
                              1. Essaye sa:

                                $TO = "cedricbernard@stationbm95.fr";

                                $h = "From: " . $TO;

                                $message = "";

                                while (list($key, $val) = each($_POST)) {
                                $message .= "$key : $val<br>";
                                }

                                mail($TO, $_POST['title'], $message, $h);
                                1. Salut,

                                  Comme Camuke dit, sans ton code, c'est un peu difficile d'être précis sur le pourquoi. Cependant, il est possible qu'il y ait une erreur de syntaxe dans ton update sur WampServer, (virgule manquante, etc). Souvent, lorsque quelque chose échoue comme ça, c'est à cause d'une erreur stupide comme ça. C'était souvent ça pour moi. ^^

                                  J'aimerais voir en particulier ce que tu fais pour simuler un message provenant de l'extérieur.
                                  Allez, va poster du code! =)

                                  JeepyLeChat

                                  /*edit*/

                                  Eh ben, tu as postée ton code pendant que je tapais ça. Haha.
                                  1. Voilà le form: <form method="post" action="formmail.php"><input
                                    name="subject" value="formmail" type="hidden">
                                    <table>
                                    <tbody>
                                    <tr>
                                    <td>Votre Nom:</td>
                                    <td><input name="realname" size="30"
                                    type="text"></td>
                                    </tr>
                                    <tr>
                                    <td>Votre Email:</td>
                                    <td><input name="email" size="30"
                                    type="text"></td>
                                    </tr>
                                    <tr>
                                    <td>Votre Telephone:</td>
                                    <td><input name="telephone" size="30"
                                    type="text"></td>
                                    </tr>
                                    <tr>
                                    <td>modele bmw:</td>
                                    <td><input name="modele" size="30"
                                    type="text"></td>
                                    </tr>
                                    <tr>
                                    <td>Sujet:</td>
                                    <td><input name="title" size="30"
                                    type="text"></td>
                                    </tr>
                                    <tr>
                                    <td colspan="2">votre message:<br>
                                    <textarea cols="50" rows="6"
                                    name="comments"></textarea>
                                    </td>
                                    </tr>
                                    </tbody>
                                    </table>
                                    <br>
                                    <input value="Envoyer" type="submit"> -
                                    <input value="Annuler" type="reset"></form>
                                    et voilà le formmail en php :
                                    <?php
                                    $TO = "cedricbernard@stationbm95.fr";

                                    $h = "From: " . $TO;

                                    $message = "";

                                    while (list($key, $val) = each($HTTP_POST_VARS)) {
                                    $message .= "$key : $val\n";
                                    }

                                    mail($TO, $subject, $message, $h);

                                    Header("Location: http://stationbm95.fr");

                                    ?>

                                    Merci si vous pouvez m'aider de manière à ce que je comprenne.
                                    vega32
                                    1. salut a toi,

                                      Si tu reçoit le mail c'est que certaine chose doivent marcher, malheureusement, n'étant pas extralucide, je ne peux voir ton code si tu ne le montre pas donc je peux pas t'aider xD

                                      a bientot