8791 sujets

Développement web côté serveur, CMS

Bonjour à tous !

Je souhaite créer un formulaire, mais j'ai deux gros soucis. J'ai déjà rechercher si un de vous avait eu le probleme, et je n'ai pas toruvé... Peut-être ai-je sauter la ligne... Toujours est-il que je me décide Smiley smile

Donc voilà déjà le code !

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Je pose ma question !</title>
<style type="text/css">
<!--
.formLabels {
	font-weight: bold;
	text-align: right;
	padding-bottom: 10px;
}
input, select {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-weight: normal;
	background-color: #f6dbe9;
	margin-bottom: 10px;
}
-->
</style>
</head>

<body>
<div style="width:610px; height:400px;">

<form id="form1" name="form1" method="POST">
  <fieldset>
  <legend>Je pose ma Question !</legend>
  <table width="600" border="0">
    <tr>
      <td class="formLabels">Nom :</td>
      <td><input type="text" name="nom" id="nameText" value="<?php echo $_POST['nom'];?>"/></td>
    </tr>
    <tr>
      <td class="formLabels">Soci&eacute;t&eacute; :</td>
      <td><input type="text" name="societe" id="nameText" value="<?php echo $_POST['societe'];?>"/></td>
    </tr>
    <tr>
      <td class="formLabels">Email :</td>
      <td><input type="text" name="email" id="emailText" value="<?php echo $_POST['email'];?>"/></td>
    </tr>
    <tr>
      <td class="formLabels">Ma question :</td>
      <td><textarea name="question" id="questionText" cols="50" rows="6" value="<?php echo $_POST['question'];?>"></textarea></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Envoyer" id="Envoyer" value="Envoyer" /></td>
    </tr>
    </table>
  </fieldset>
</form>

<?php
$nom = $_POST['nom'] ;
$societe = $_POST['societe'] ;
$email = $_POST['email'] ;
$question = $_POST['question'] ;
$destination = "bla@bla.fr";
$sujet = ".$nom.,.$prenom.,.$email.";
 
mail($destination, $sujet, $demande);
echo "Votre email a bien été envoyé. Nous nous engageons à vous répondre sous 48h. Merci.";
?>


</div>
</body>
</html>


Et les deux soucis :
1/ je reçois pas de mail Smiley ohwell
2/ mes champs sont déjà remplis, mais avec des "<?php echo $_POST['societe'];?>"

Je précise que ce formulaire doit etre fait pour la boite dans laquelle je suis employé, et même après leur avoir dit que je n'avais jamais codé de ma vie en php, ils m'ont répondus "ben debrouille toi"... Donc au secours... Smiley lol
Modifié par Stase (06 Feb 2008 - 15:11)
L'extension de ton fichier doit certainement être .htm ou .html et non .php et de ce fait le moteur php n'est pas appelé pour exécution du code placé entre les balises php.
Stase a écrit :



$sujet = ".$nom.,.$prenom.,.$email.";
 




C'est plutôt douteux comme code...
Tu devrais utiliser soit :

$sujet = $nom.",".$prenom.",".$email;

soit

$sujet = "$nom,$prenom,$email";


Est-ce suffisant pour faire planter la fonction mail() ?
Bonjour !

Je relance mon post, puisque j'ai toujours mon souci de texte affiché dans mes champs, alors que j'aimerai qu'ils soient vides...

Merci PiR2, j'ai changé ca. Ca n'a pas fait mieux fonctionné le truc, mais c'est peut etre plus propre Smiley smile

Je repose mes questions, au cas ou :
1/ mes champs sont rempli avec une ligne de code php : <?php echo $_POST['nom'];?> par exemple.
2/ quand je clique sur "envoyer", je ne recois pas immédiatement le mail (c'est a dire que c'est franchement long, mais bon, why not, c'est pas le plus important ici), mais surtout ca n'affiche pas du tout mon "votre message a bien été envoyé blablabla", mais ca recharge le formuleir comme si la personne n'avais rien tapé. Smiley ohwell

Merci à tous !

[EDIT] : Une fois uploadé sur le serveur, je n'ai plus rien dans mes champs, donc c'est cool. Néanmoins, j'ai un message sous mon formulaire qui me dit "votre email n'est pas valide". Or je voudrais que ce message s'affiche si la personne n'entre pas une adresse correcte, et pas tout le temps Smiley ohwell

[re-EDIT] : en fait je re-recois pas de mail, comme au tout debut, alors que mon fichier s'appelle formulaire.php...
Modifié par Stase (21 Jan 2008 - 12:20)
Salut Stase Smiley cligne ,

je suppose que si en local tu vois toujours des <?php echo $_POST['nom'];?> c'est que tu n'as aucun logiciel pour interpréter tes pages php (par exemple WAMP5 si tu es sous Windows) Smiley lol !

Sinon :

* ce n'est pas parce que le code php se trouve après ton formulaire dans le code qu'il ne va être interprété que quand le formulaire aura été soumis. Le PHP est toujours interprété en premier (côté serveur) au moment de la génération de la page html finale. Il faut donc tester que le formulaire a bien été envoyé avec, par exemple, if ($_POST) avant d'envoyer le mail.
Tu as un exemple dans cette réponse (qui inclue un test minimal sur les variables).

* tu essayes d'envoyer comme message du mail la variable $demande qui n'existe pas : je suppose qu'il faut plutôt mettre $question Smiley biggol !

* tu essayes également d'utiliser la variable $prenom qui n'existe pas : je suppose qu'il faut plutôt mettre $societe...

A+
Merci pour ta réponse Smiley smile

En fait j'avais déjà corrigé les problemes de variable, je m'en étais rendu compte seul, mais je n'avais pas mis le code à jour. Mea Culpa Smiley smile

Voici le PhP que j'ai actuellement :

<?php
$nom = $_POST['nom'] ;
$societe = $_POST['societe'] ;
$email = $_POST['email'] ;
$question = $_POST['question'] ;
$destination = "bla@bla.fr";
$sujet = $nom.",".$societe.",".$email;
$verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";
if(!preg_match($verif,$email)){
echo "Votre email n'est pas valide";
}
else{
mail($destination, $sujet, $question);
echo "Votre email a bien été envoyé. Nous nous engageons à vous répondre sous 48h. Merci.";
}
?>


Pour ce qui est du serveur en local, j'ai xampp, mais il se lance pas bien je crois... Je m'en sers parce que je suis aussi censé faire un site via Joomla, et dans le tuto d'install', ils parlent de Xampp, et montrent comment le configurer.

Enfin, je vais essayer de voir par rapport à ton exemple, je te tiens au courant Smiley smile
EDIT : code viré, vu que ca fonctionne finalement pas Smiley ohwell
Modifié par Stase (22 Jan 2008 - 11:13)
Hm... Ca fait un peu triple post, et j'avoue que ce n'est pas terrible... Néanmoins, si j'edite personne ne le verra !
M'enfin.

Donc au final, toujours ce même souci. Je test des envois de mails, ça fonctionne, et parfois, ça ne fonctionne pas. J'ia laissé passer pas loin de 15h, et je n'ai toujours pas reçu des mails test que j'ai fait hier Smiley ohwell

Je rebalance un coup de code, pour la route :


<?php
$nom = $_POST['nom'] ;
$societe = $_POST['societe'] ;
$email = $_POST['email'] ;
$question = $_POST['question'] ;
$destination = "bla@bla.fr";
$sujet = $nom.",".$societe.",".$email;
if ($_POST)
{
	if (empty($question))
	{
		$erreur = true;
		$errmsg = 'Merci de saisir votre question.';
	}
	if (empty($email))
	{
		$erreur = true;
		$errmsg = 'Merci de saisir votre email.';
	}
	if (empty($societe))
	{
		$erreur = true;
		$errmsg = 'Merci de saisir votre societe.';
	}
	if (empty($nom))
	{
		$erreur = true;
		$errmsg = 'Merci de saisir votre nom.';
	}
	if (!$erreur)
	{
		mail($destination, $sujet, $question);
		header("Location: pagedeconfirmation.php");
		exit;
	}
}
?>


J'ai fouillé sur des tutos, et ma fonction Mail() a les bons arguments. Je vois vraiment pas mon erreur la...
Re',

je ne vois pas l'erreur Smiley rolleyes ... Mais tu pourrais tout de même faire ça :
	if (!$erreur)
	{
		if (mail($destination, $sujet, $question)) {
			header("Location: pagedeconfirmation.php");
			exit;
		} else {
			echo "Erreur survenue lors de l'envoi du mail";
		}
	}
histoire d'être sûr...

Sinon tu es chez quel hébergeur ? Car il me semble que certains obligent à préciser les champs From: et Reply-to: Smiley murf ...

Et autresinon : tu es bien sûr d'être sûr que tu n'as pas avoir laissé $destination = "bla@bla.fr"; pour tes tests Smiley lol ?
Re Heyoan Smiley smile

Oui, j'ai bien mis mon vrai mail pour les tests Smiley cligne Mais c'est gentil d'y avoir pensé, c'est vrai que ça aurait pu...

Je test ton code, mais je voulais te demander ce que tu entendais par From: et Reply-to: Smiley ravi

EDIT : comme d'hab, j'ai oublié de répondre à la moitié des questions... Le site est herbergé chez OVH, avec un niveau de service acceptant évidement le php Smiley smile

re-Edit : J'ai testé ton code, et il ne me renvoie aucune erreur, il m'envoie bien comme avant sur ma page "pagedeconfirmation.php". Donc c'est qu'à priori tout se passe bien Smiley ohwell
Modifié par Stase (22 Jan 2008 - 14:22)
Stase a écrit :
re-Edit : J'ai testé ton code, et il ne me renvoie aucune erreur, il m'envoie bien comme avant sur ma page "pagedeconfirmation.php". Donc c'est qu'à priori tout se passe bien Smiley ohwell
Oui... Bizarre...

Pour From: et Reply-to: ça se rajoute en 4ème paramètre :
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n";

@mail($destination, $sujet, $question, $headers);

Modifié par Heyoan (22 Jan 2008 - 14:36)
Hop, sujet résolu !!

Ca venais d'OVH, notre hébergeur, qui avait des cousi d'envoie de courrier...... Smiley fache

Merci encore !