Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/04/2011, 23h17   #1
Invité régulier
 
Christian
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations personnelles :
Nom : Christian
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 9
Points : 9
Par défaut Champ vide sur formulaire

Bonjour,

J'ai un problème de formulaire sur un site. Voici son URL :

http://www.credit-immobilier-infos.com/contact.html

Je reçois bien le mail, mais le texte écrit dans "Votre message" a disparu ! Que ce passe-t-il ?

Je vous mets le code pour gagner du temps :

Le html--->
Code :
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
 
<form method="post" action="traitement.php">
 
   <fieldset>
       <legend>Vos coordonnées</legend> <!-- Titre du fieldset -->
 
       <label for="nom">Quel est votre nom ?</label><br />
       <input type="text" name="nom" id="nom" tabindex="10" /><br />
 
       <label for="prenom">Quel est votre prénom ?</label><br />
       <input type="text" name="prenom" id="prenom" tabindex="20" /><br />
 
       <label for="email">Quel est votre e-mail ?</label><br />
       <input type="text" name="email" id="email" tabindex="30" /><br />
   </fieldset>
 
   <fieldset>
       <legend>Motif de votre demande</legend> <!-- Titre du fieldset -->
 
       <p>
           <input type="radio" name="souhait" value="Partenariat" id="Partenariat" tabindex="40" /> <label for="Partenariat">Partenariat</label><br />
           <input type="radio" name="souhait" value="Echange de lien" id="Echange de lien" tabindex="50" /> <label for="Echange de lien">Echange de lien</label><br />
           <input type="radio" name="souhait" value="Suggestion  pour le site" id="Suggestion  pour le site" tabindex="60" /> <label for="Suggestion  pour le site">Suggestion  pour le site</label><br />
           <input type="radio" name="souhait" value="autre" id="autre" tabindex="70" /> <label for="autre">Autre...</label><br />
       </p>
 
       <p>
           <label for="precisions">Votre message :</label><br />
           <textarea name="precisions" id="precisions" cols="40" rows="4" tabindex="80"></textarea>
       </p>
   </fieldset>
   <p>
       <input type="submit" /> <input type="reset" />
   </p>
 
</form>
Et le PHP--->
Code :
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
 
<?php 
$nom=$HTTP_POST_VARS['nom']; 
$mail=$HTTP_POST_VARS['mail']; 
$objet=$HTTP_POST_VARS['objet']; 
$message=$HTTP_POST_VARS['message']; 
 
/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 
 
//////ici on détermine le mail en format text 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
 
////ici on détermine l'expediteur et l'adresse de réponse 
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; 
 
$subject="$objet"; 
$destinataire="christian@credit-immobilier-infos.com"; //remplacez "webmaster@votre-site.com" par votre adresse e-mail
$body="$message"; 
if (mail($destinataire,$subject,$body,$headers)) { 
echo "Votre mail a bien été envoyé<br>"; 
} else { 
echo "Une erreur s'est produite"; 
} 
?></p>
<p align="center">Pour retourner vers la page d'accueil<br>
cliquez <a href="http://www.credit-immobilier-infos.com">ICI
</a></p>
Merci de vos réponses,

Christian
parfait radin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 00h24   #2
Membre éclairé
 
Avatar de beejeridou
 
Homme
Webmaster
Inscription : février 2007
Messages : 261
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : février 2007
Messages : 261
Points : 315
Points : 315
Ben je pense que quand tu fais:

Code :
1
2
 
$message=$HTTP_POST_VARS['message'];
tu demandes le résultat de "message" alors que l'attribut name de ton textarea se nomme "precisions".

Une petite faute que tu ne referas plus! ^^
__________________
Et pourtant... Elle tourne.
http://www.artisan-developpeur.fr
beejeridou est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/04/2011, 00h52   #3
Invité régulier
 
Christian
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations personnelles :
Nom : Christian
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 9
Points : 9
Merci beaucoup, ça fonctionne !

J'ai le texte, mais pas l'email de celui qui envoie. (ni le motif)
Mais bon, c'est peut-être du au fait que je m'écrit à moi même ?

Peux-tu essayer, stp ?

Christian
parfait radin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 10h43   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Au passage $HTTP_POST_VARS n'existe plus depuis PHP4.1
Remplace le par $_POST
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/04/2011, 13h22   #5
Membre éclairé
 
Avatar de beejeridou
 
Homme
Webmaster
Inscription : février 2007
Messages : 261
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : février 2007
Messages : 261
Points : 315
Points : 315
Pour tes autres valeurs vides... C'est la même erreur.

Code :
1
2
3
4
5
6
7
 
 
<input type="text" name="valeur_a_recup" />
 
<?php
$valeur = $_POST['valeur_a_recup'];
?>
__________________
Et pourtant... Elle tourne.
http://www.artisan-developpeur.fr
beejeridou est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/04/2011, 21h55   #6
Invité régulier
 
Christian
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations personnelles :
Nom : Christian
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 9
Points : 9
Par défaut re

Bonjour,

@Sabotage : merci, j'ai remplacé.

@Beejeridou :

Code :
1
2
3
4
5
<input type="text" name="valeur_a_recup" />
 
<?php
$valeur = $_POST['valeur_a_recup'];
?>
Excuses, je n'ai pas compris !
Ton code, je le met où ?

Christian
parfait radin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2011, 22h19   #7
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Ben dans ton code php tu fais
Citation:
$mail=$HTTP_POST_VARS['mail'];
alors que dans ton formulaire le mail est récupéré par
Code :
<input type="text" name="email" id="email" tabindex="30" />
donc le champ se nomme "email" et dans ton code php il faudrait faire :
et même principe pour toutes les variables que tu veux récupérer en provenance du formulaire.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/04/2011, 22h36   #8
Invité régulier
 
Christian
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations personnelles :
Nom : Christian
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 9
Points : 9
Je dois préciser que je suis nul en php.

Donc ce qui peut te paraitre comme facile, et bien moi je n'y comprends rien !
Peux-tu préciser, stp ?

Christian
parfait radin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2011, 22h38   #9
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Autre chose : il faut protéger les variables du header qui reçoivent le mail et le nom de l'envoyeur sinon ton formulaire pourrait être utilisé pour envoyer des spam.
Donc le début de ton code php devrait ressembler à cela :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
function Protege_header($value) 
{
$value = str_replace("\n", "", str_replace("\r", "", $value));
return $value;
}
 
$nom = Protege_header($_POST['nom']); 
$mail = Protege_header($_POST['email']);
 
$objet = $_POST['souhait']; 
$message = $_POST['precisions']; 
//...
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2011, 22h48   #10
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Pour répondre à ta question précédente et afin de bien visualiser les choses concernant le tableau $_POST reçu en fonction des champs de formulaire, dans une page séparée, testes

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
 
<form action= "#" method = "post" >
 
<input type = "text" name="toto" id="id_toto" />
<input type = "text" name="titi" id="id_titi" />
 
<input type = "submit" name="submit" value = "envoyer" />
 
</form>
Fait des tests et ensuite remplace dans ton formulaire name="toto" par name="jojo" (par exemple) et refais des tests... tu verras le tableau $_POST changer en fonction du nom des input
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2011, 23h10   #11
Invité régulier
 
Christian
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations personnelles :
Nom : Christian
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 9
Points : 9
Par défaut re

Non, ben le mieux serait de (vous allez me trouver culotté) de me copier le code a mettre dans ma page, je fais un copié/collé et voila.

Ce n'est pas de la mauvaise volonté, je t'assure, mais je n'y comprends rien !

Christian
parfait radin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2011, 23h43   #12
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Citation:
Envoyé par parfait radin Voir le message
Ce n'est pas de la mauvaise volonté, je t'assure, mais je n'y comprends rien !

Christian
Si, c'est de la mauvaise volonté puisque justement je t'ai donné un exemple tout fait qui te donne les moyens de comprendre et que tu ne veut même pas essayer (suffit pourtant de faire un copié/collé dans une page vierge et de tester).

Citation:
Envoyé par parfait radin Voir le message
Non, ben le mieux serait de (vous allez me trouver culotté) de me copier le code a mettre dans ma page, je fais un copié/collé et voila.

Christian
Si tu relisais mes précédents messages un peu plus attentivement, je t'ai déjà donné la réponse.

Sinon cela dépasse le cadre d'un forum d'entraide, et cela s'appelle une prestation de service, donc tu donne combien en échange ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 00h11   #13
Invité régulier
 
Christian
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations personnelles :
Nom : Christian
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 9
Points : 9
Par défaut re

Ben je suis désolé que tu le prennes comme ça !

Tu ne te rappelle plus comment tu étais à tes débuts en php ?

Bon, je vais laisser tomber et revoir ça demain, j'aurais les idées plus claires.
Mais si j'y arrive pas, j'espère que tu voudras bien m'aider.

Je t'assure que ce n'est pas de la mauvaise volonté. Je voudrais en finir au
plus vite avec ce formulaire et vite passer à autre chose.

Après, libre à toi de me croire ou non, mais je ne vois pas bien où serait mon intérêt de faire trainer ça 15 jours !

Christian
parfait radin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 00h58   #14
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Citation:
Envoyé par parfait radin Voir le message
Bon, je vais laisser tomber et revoir ça demain, j'aurais les idées plus claires.
Bonne idée, et c'est valable même avec de l'expérience.

Citation:
Envoyé par parfait radin Voir le message
Mais si j'y arrive pas, j'espère que tu voudras bien m'aider.
Je passe mon temps à le faire !
Mais comment veux-tu que nos conseils puissent t'aider si tu ne les suis pas ?

Citation:
Envoyé par parfait radin Voir le message
Je t'assure que ce n'est pas de la mauvaise volonté. Je voudrais en finir au
plus vite avec ce formulaire et vite passer à autre chose.

Après, libre à toi de me croire ou non, mais je ne vois pas bien où serait mon intérêt de faire trainer ça 15 jours !
Inutile d'aller plus loin si déjà tu ne comprend pas le principe d'un formulaire et comment récupérer ses valeurs. Cela prendra le temps que cela prendra mais c'est LA base.

Encore une fois je t'ai fait un code de test sur mesure pour que tu puisse comprendre ce que récupère le tableau $_POST en fonction du nom des champs "input" du formulaire. Il te suffit de le copier dans une page vierge et de tester. Cela devrait te prendre moins de deux minutes... mais libre à toi pour que ça dure 15 jours avant de t'y mettre
Tu peux aussi regarder ce tuto.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 17h50   #15
Invité régulier
 
Christian
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations personnelles :
Nom : Christian
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 9
Points : 9
Par défaut re

Bonjour,

Voila, je crois avoir compris la première partie de vos explications. Enfin compris est un bien grand mot; disons que j'ai réussi à faire la modif.

Voici mon nouveau code :

Code :
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
<?php 
$nom=$_POST['nom']; 
$prenom=$_POST['prenom']; 
$email=$_POST['email']; 
$message=$_POST['message']; 
 
/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 
 
//////ici on détermine le mail en format text 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
 
////ici on détermine l'expediteur et l'adresse de réponse 
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; 
 
$subject="$objet"; 
$destinataire="christian@credit-immobilier-infos.com"; //remplacez "webmaster@votre-site.com" par votre adresse e-mail
$body="$message"; 
if (mail($destinataire,$subject,$body,$headers)) { 
echo "Votre mail a bien été envoyé<br>"; 
} else { 
echo "Une erreur s'est produite"; 
} 
?></p>
<p align="center">Pour retourner vers la page d'accueil<br>
cliquez <a href="http://www.credit-immobilier-infos.com">ICI
</a></p>
Par contre pour cette partie html :

Code :
1
2
3
4
5
6
<p>
           <input type="radio" name="souhait" value="Partenariat" id="Partenariat" tabindex="40" /> <label for="Partenariat">Partenariat</label><br />
           <input type="radio" name="souhait" value="Echange de lien" id="Echange de lien" tabindex="50" /> <label for="Echange de lien">Echange de lien</label><br />
           <input type="radio" name="souhait" value="Suggestion  pour le site" id="Suggestion  pour le site" tabindex="60" /> <label for="Suggestion  pour le site">Suggestion  pour le site</label><br />
           <input type="radio" name="souhait" value="autre" id="autre" tabindex="70" /> <label for="autre">Autre</label><br />
       </p>
Je ne vois rien dans le php qui concerne ça, ou alors j'ai zappé vos explications ! (me dispute pas, je viens de relire 3 fois)

Merci,

Christian
parfait radin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 19h42   #16
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Quand on envoie un formulaire html avec la méthode post (ce qui est ton cas),
php récupère ces valeurs dans un tableau nommé $_POST.
L'index des éléments du tableau $_POST correspond au nom des champs du formulaire html.

Tu t'en rendra compte en testant ce code dans une page séparée (c'est juste la troisième fois que je te dis de faire ce test) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
 
<form action= "#" method = "post" >
 
<input type = "text" name="toto" id="id_toto" />
<input type = "text" name="titi" id="id_titi" />
 
<input type = "submit" name="submit" value = "envoyer" />
 
</form>
Tu clique sur envoyer, ensuite tu change la valeur du nom (name) d'un input du formulaire et tu re teste.
FAITS-LE et montre nous le résultat !
(je ne répondrai plus tant que j' n'aurai pas la réponse)
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 21h17   #17
Invité régulier
 
Christian
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations personnelles :
Nom : Christian
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 9
Points : 9
Bon, tu as raison, ne me réponds plus. C'est mieux comme ça ! Et moi pour ma part, avant que ça dérappe, je vais en rester là aussi.

OK, je n'y comprends rien au php (ce que tu ne veux pas comprendre) mais c'est pas pour ça que je suis un demeuré. Moi aussi je pourrais prendre un domaine où tu n'y connais rien et agir comme toi avec moi.

Ce que tu me dis, c'est du chinois pour moi. (pardon pour nos amis chinois, je n'ai rien contre eux). Tester ! Comment ? Enfin bref...

Ce code, je ne l'ai pas crée moi même. J'en serais bien incapable ! Je l'ai récupéré sur le Net, et je voulais l'adapter pour mon site.

Je ne te demandais pas un cours de php, je vais acheter bientôt le livre du site du zéro pour ça. Je suis sûr que tu pourrais écrire le code en 5 minutes et moi je n'y arrive pas. C'est ça qui m'énerve un peu, mais bon...

On va pas se prendre la tête plus longtemps. Tu ne veux pas comprendre. OK, c'est ton droit.

Bonne journée,

Christian

PS : Et merci quand même.
parfait radin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 21h31   #18
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Citation:
Envoyé par parfait radin Voir le message
...Je suis sûr que tu pourrais écrire le code en 5 minutes et moi je n'y arrive pas. C'est ça qui m'énerve un peu, mais bon...
Pas la peine de mettre au conditionnel. Ce n'est pas tant que "je pourrais l'écrire" mais plutôt que je te l'ai déjà écrit

J'ai corrigé les premières lignes et à la place des points de suspensions tu mets le reste du code. Tu ne peux pas le faire ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 21h48   #19
Invité régulier
 
Christian
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations personnelles :
Nom : Christian
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 9
Points : 9
Par défaut re

Voila, ça je viens de le faire. C'est le reste qui me chagrine.
A moins que ça soit tout bon, mais je ne crois pas.

Je me suis un peu emporté, et je m'en excuse. Je crois que
tu es quelqu'un de sympa et qui aide les gens. Mais je crois
aussi qu'il est difficile pour tout le monde de se souvenir de
ses débuts et de se mettre au niveau des débutants, quelle
que soit la discipline.

Merci et bonne soirée,

Christian
parfait radin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 22h02   #20
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Tu peux remontrer tout le code php qui inclus mes corrections ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h26.


 
 
 
 
Partenaires

Hébergement Web