Besoin aide pour formulaire en php

Fermé
tizoulou Messages postés 6 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 28 août 2010 - 21 août 2010 à 07:14
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 - 22 août 2010 à 16:38
Bonjour,

Voici mon problème... j'ai un formulaire que je fais remplir a mon usager sur mon site et je veux m'envoyer par email le formulaire. Donc j'ai utiliser le POST et je l'envoie dans un fichier php. voici le code dans mon fichier php:

<?php
//Pour définir chaque input du formulaire, ajouter le signe de dollar devant

$msg = "Prénom:\t$T1\n";
$msg = "Nom:\t$T2\n";
$msg = "Adresse:\t$T3\n";
$msg = "Ville:\t$T4\n";
$msg = "Code Postal:\t$T5\n";
$msg = "Téléphone:\t$T6\n";

// Si formulaire de la maternelle
if ($sujet=="Inscription à la maternelle"):
$msg = "Nom du chiot:\t$T7\n";
$msg = "Race:\t$T8\n";
$msg = "Âge:\t$T9 semaines\n";

endif;

$msg = "Message:\t$Commantaire\n";

// Si c est pas une commande special
if ($sujet!="Commande special"):
if ($chk_ami):
$msg = "Référé par: un ami(e)\n";
elseif ($C1):
$msg = "Référé par: un salon d exposition\n";
elseif ($C2):
$msg = "Référé par: les pages jaunes\n";
elseif ($C3):
$msg = "Référé par: un moteur de recherche\n";
elseif ($C4):
$msg = "Référé par: notre site internet\n";
elseif ($C5):
$msg = "Référé par: une publicitée\n";
else:
$msg = "référé par: $T10\n";
endif;
endif;
$recipient = "cpc@infochien.com";

$mailheaders = "From: $T1 $T2 \n";

mail($recipient, $sujet, $msg, $mailheaders);

echo "<HTML><HEAD>";
echo "<TITLE>Formulaire envoyer!</TITLE></HEAD><BODY>";
echo "<H1 align=center>Merci, $T1 $T2 </H1>";
echo "<P align=center>";
echo "Votre formulaire à bien été envoyé !</P>";
echo "</BODY></HTML>";

?>

Le problème est quand je fais envoyer le serveur me dis que mes variable ne sont pas défini???? la je me demande si c'est un erreur ddu serveur qui m'héberge ou si l'erreur viens de mon code.

Merci de vos réponse


A voir également:

4 réponses

Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
21 août 2010 à 17:57
C'est normal, tu ne déclares jamais tes variables.

Déjà, pour les $msg = , tu devrais mettre $msg .= , parce que sinon tu écrases les données précédentes.
Ensuite, rien n'indique que les usperglobales sont activées dans ta configuration PHP.

Si le nom des champs de formulaire dans le code HTML sont "T1", "T2", etc, alors ca va, sauf pour $sujet; Il faut tout déclarer.

$sujet = $_POST['sujet']; // Si le nom de champ est 'sujet'
$T1 = $_POST['T1']; // Si le nom de champ est 'T1'
etc.

Bye ;)
1
louloute300 Messages postés 335 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 28 novembre 2012 29
Modifié par louloute300 le 21/08/2010 à 18:17
D'abord 1ère règle, c'est rarement les ordis qui foire! en faites, si ca ne marche pas, c'est forcément nos codes qui sont à modifier...

1) Tout d'abord:

if ($sujet=="Inscription à la maternelle"):
$msg = "Nom du chiot:\t$T7\n";
$msg = "Race:\t$T8\n";
$msg = "Âge:\t$T9 semaines\n";

endif;

A modifier par:

if ($sujet=="Inscription à la maternelle"){
$msg = "Nom du chiot:\t$T7\n";
$msg = "Race:\t$T8\n";
$msg = "Âge:\t$T9 semaines\n";
}


De même:

if ($sujet!="Commande special"){
if ($chk_ami){
$msg = "Référé par: un ami(e)\n";
}elseif ($C1){
$msg = "Référé par: un salon d exposition\n";
}elseif ($C2){
$msg = "Référé par: les pages jaunes\n";
}elseif ($C3){
$msg = "Référé par: un moteur de recherche\n";
}elseif ($C4){
$msg = "Référé par: notre site internet\n";
}elseif ($C5){
$msg = "Référé par: une publicitée\n";
}else{
$msg = "référé par: $T10\n";
}
}


Conclusion:
Ce sera déjà un bon début...
1
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
22 août 2010 à 14:12
"1) Tout d'abord:

if ($sujet=="Inscription à la maternelle"):
$msg = "Nom du chiot:\t$T7\n";
$msg = "Race:\t$T8\n";
$msg = "Âge:\t$T9 semaines\n";

endif;

A modifier par:

if ($sujet=="Inscription à la maternelle"){
$msg = "Nom du chiot:\t$T7\n";
$msg = "Race:\t$T8\n";
$msg = "Âge:\t$T9 semaines\n";
}"



Pourquoi?
0
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
22 août 2010 à 15:07
Simplement parce que "endif", je n'en ai jamais entendu parler, et je suppose qu'officiellement c'est comme ca. Et donc plus lisible pour la plupart des gens.

$msg = "Nom du chiot:\t$T7\n";
$msg = "Race:\t$T8\n";
$msg = "Âge:\t$T9 semaines\n";

A modifier par :

$msg = "Nom du chiot:\t$T7\n";
$msg = "Race:\t$T8\n";
$msg = "Âge:\t$T9 semaines\n";

Ne me demande pas pourquoi...
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
22 août 2010 à 16:38
Dans ce cas, je te recommande cette page:

https://www.php.net/manual/fr/control-structures.alternative-syntax.php

:)

Ca m'a perturbé de lire ton conseil sur la syntaxe, j'ai cru avoir raté quelque chose. Il s'agit de syntaxes alternatives, donc 'reconnues officiellement', juste moins utilisées, peut être parce qu'on ne les retrouve pas nécessairement dans d'autres langages.

Tu dis que c'est plus lisible pour la plupart des gens, et je pense que tu touches là à un point essentiel de l'idée ;), c'est que ça dépend des goûts et de la façon d'écrire/lire un code. Personnellement, je trouve ça plus lisible d'utiliser la syntaxe alternative, et il se trouve que j'ai aussi tendance à l'écrire plus rapidement. Je perçois bien mieux la notion de blocs de code avec elle, qu'avec la syntaxe 'classique'. Mais encore une fois, ça dépend des personnes :).

Pour aller plus loin:

if ($sujet!="Commande special"): 
if ($chk_ami): 
$msg = "Référé par: un ami(e)\n"; 
elseif ($C1): 
$msg = "Référé par: un salon d exposition\n"; 
elseif ($C2): 
$msg = "Référé par: les pages jaunes\n"; 
elseif ($C3): 
$msg = "Référé par: un moteur de recherche\n"; 
elseif ($C4): 
$msg = "Référé par: notre site internet\n"; 
elseif ($C5): 
$msg = "Référé par: une publicitée\n"; 
else: 
$msg = "référé par: $T10\n"; 
endif; 
endif;


Je trouve ça carrément horrible^^. A en juger par les bouts de code qu'on a là, si $chk_ami existe, on a forcément une indication sur l'entité référante. Donc, tizoulou, médite là dessus:

$msg.=( $sujet!="Commande special" and $chk_ami)
? "Référé par: $C\n"
: null;


Un code suffisamment propre et poussé devrait te permettre d'utiliser cette ligne là sans aucun ajustement. Si ton code a besoin d'ajustements, c'est que tu peux encore l'améliorer^^.
0
tizoulou Messages postés 6 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 28 août 2010
21 août 2010 à 23:17
Merci pour votre aide... Bilow oui mes variable s'appel T1, T2 etc. mais je vais les déclarer qu'en même a nouveau car c'est l'erreur que le serveur me donne :
Notice: Undefined variable: T1 in D:\Websites\www.infochien.com\courriel.php on line 4
et j'ai cette erreur a toute les variable...

Louloute300 je vais modifier mon code de mes if mais plusieurs place disent que c'est l'ancienne transcription que la nouvelle doit se faire avec les deux point... la je ne sais plus quoi faire... mais je vais essayer tout de même et je vous reviens sur les résultat.

merci encore
0
tizoulou Messages postés 6 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 28 août 2010
22 août 2010 à 01:19
bon j'ai finalement réussi mais par contre j'ai une erreur quand il transmet le email... voici l'erreur quelqu'un peut m'aider SVP

Merci

Warning: mail() [function.mail]: SMTP server response: 451 See https://cr.yp.to/docs/smtplf.html in D:\Websites\www.infochien.com\courriel.php on line 60

et ma ligne de code est:
mail($recipient, $sujet, $msg, $mailheaders) j'ai vérifier toute mes variable et ils ont tous ce qu'il faut dedans serais le serveur qui me bloque???
0
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
22 août 2010 à 14:02
Salut !

Ce message d'erreur signifie probablement que le serveur SMTP n'existe pas, est surchargé ou ne fonctionne pas.

Il faut donc en choisir un autre. C'est juste anormal de la part de ton hébergeur. Si tu es en local, il y a une solution, mais pour un hébergeur : Il faut modifier la config. Et généralement c'est impossible.

Ce qu'il faut faire maintenant : Attendre que quelqu'un confirme que je ne me suis pas trompé dans mon explication, et puis signaler à ton hébergeur que le SMTP estd défaillant.

Bye ;)
0