Bonjour à tous.
Pour la création de la quatrième version de mon site web, je cherche a combiner le fichier d'un formulaire et le PHP qui lui est associé. (En clair, un seul fichier au lieu de deux). Je m'explique, j'utilise de l'AJAX pour charger les differentes pages de mon site dans un div central et pour le formulaire de contact (ou autres), lorsqu'on envoit les informations vers le PHP celui-ci ce charge tout seul dans une nouvelle page et donc casse le design... Smiley sweatdrop


J'aimerai donc lier ces deux fichiers:
Mon HTML:
<!-- 
	- fef's website | V.4.x | Contact's HTML -
	
	 ______   ______     ______  
	/\  ___\ /\  ___\   /\  ___\ 
	\ \  __\ \ \  __\   \ \  __\ 
	 \ \_\    \ \_____\  \ \_\   
	  \/_/     \/_____/   \/_/ 
  
-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

		<title> - fef's website - Send a mail to fef -</title>	
		<style type="text/css" media="screen">@import "css/contact.css";</style>
		<script type="text/javascript" src="javascripts/contact.js"></script> 	
	</head>
	<body>
		<form id="formulaire-contact" method="POST" action="contact/moteur.php" onsubmit="return verificationFormulaireContact()" >
			<input id="pseudo" class="pseudo" onfocus="miseAZero()" type="text" value="Votre pseudo / nom" /><br/>
			<input id="email"  class="email" onfocus="miseAZero()" type="text" value="Votre adresse email" /><br/>
			<input id="site" class="site" onfocus="miseAZero()" type="text" value="Votre site web (facultatif)"><br/>
			<input id="sujet" class="sujet"  onfocus="miseAZero()" type="text" value="Sujet" /><br/>
			<textarea id="message" onfocus="miseAZero()" class="message">Votre message</textarea><br/>
			<input id="annuler" class="boutton" type="reset" value="Annuler" /><input id="envoyer" class="boutton" type="submit" value="Envoyer" />
		</form>
	</body>
</html>


Et voila mon PHP:
<!-- 
	- fef's website | V.4.x | Contact's PHP -
	
	 ______   ______     ______  
	/\  ___\ /\  ___\   /\  ___\ 
	\ \  __\ \ \  __\   \ \  __\ 
	 \ \_\    \ \_____\  \ \_\   
	  \/_/     \/_____/   \/_/ 
  
-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

		<title> - fef's website - Send a mail to fef -</title>
	</head>
	<body>
		<?php
			$pseudo_formulaire = htmlentities($_POST["pseudo"] , ENT_QUOTES , "UTF-8");
			$email_formulaire = htmlentities($_POST["email"] , ENT_QUOTES , "UTF-8");
			$site_formulaire = htmlentities($_POST["site"] , ENT_QUOTES , "UTF-8");
			$sujet_formulaire = htmlentities($_POST["sujet"] , ENT_QUOTES , "UTF-8");
			$message_formulaire = htmlentities($_POST["message"] , ENT_QUOTES , "UTF-8");
			$ip_formulaire = $_SERVER["REMOTE_ADDR"];
			
			$message_email= "------------------------------------------------------------------------------------------------------------------------\n";
			$message_email.= "Email généré par fef's Website le " . date("d/m/y \à H:i:s") . "\n";	
			$message_email.= "------------------------------------------------------------------------------------------------------------------------\n";
			$message_email.= "Pseudo: $pseudo_formulaire\nEmail: $email_formulaire\nIP: $ip_formulaire\nSite Web: $site_formulaire\n";
			$message_email.= "------------------------------------------------------------------------------------------------------------------------\n";	
			$message_email.= "Sujet: $sujet_formulaire\n";
			$message_email.= "------------------------------------------------------------------------------------------------------------------------\n";	
			$message_email.= "Message: \n$message_formulaire";
			
			function formatage($message_email)
			{
				$message_email = str_replace("\r \n", "<br />", $message_email);
				$message_email = stripslashes($message_email);
				return ($message_email);
			}
			
			$message_email = formatage($message_email);
			
			mail("ifef@hotmail.fr" , "- fef's Website - " . $sujet_formulaire . " -", $message_email);
			
			echo "Votre message a bien été envoyé.";
		?>
	</body>
</html>


Merci de votre aide.
fef
Modifié par iFef (20 Jul 2007 - 14:00)
il faut utiliser un if .. else : le if vérifie que, a minima, l'utilisateur a bien rempli le champ email, sujet et message (rajoute/enleve des conditions au besoin). Si c'est le cas il traite le formulaire.

sinon il affiche le formulaire.



<?php

if(isset($_POST["email"]) && isset($_POST["sujet"]) && isset($_POST["message"]))
{
     // ici tu met tout le code php de la page de traitement de formulaire
}
else
{
    echo ' entre ces deux quote tu met tout le html du formulaire ';
}

?>


n'oublie pas de modifier l'attribut action de la balise form pour rediriger le formulaire sur lui meme.
Modifié par le.troll (20 Jul 2007 - 14:12)
Le premier fichier n'est pas non plus lié, non ?

Comment est-ce que le contenu est inclu dans le layout général ?
le.troll a écrit :
il faut utiliser un if .. else : le if vérifie que, a minima, l'utilisateur a bien rempli le champ email, sujet et message (rajoute/enleve des conditions au besoin). Si c'est le cas il traite le formulaire.

sinon il affiche le formulaire.



<?php

if(isset($_POST["email"]) && isset($_POST["sujet"]) && isset($_POST["message"]))
{
     // ici tu met tout le code php de la page de traitement de formulaire
}
else
{
    echo ' entre ces deux quote tu met tout le html du formulaire ';
}

?>


n'oublie pas de modifier l'attribut action de la balise form pour rediriger le formulaire sur lui meme.


Si j'ai bien compris: le probleme c'est que si on clique sur le bouton envoyer du formulaire il va se recharger et donc ne sera plus contenu dans la frame en AJAX.

FlorentG a écrit :
Le premier fichier n'est pas non plus lié, non ?

Comment est-ce que le contenu est inclu dans le layout général ?


Si j'ai bien compris: non le fichier n'est pas inclu des le depart. Il est inclu celon la catégorie, en AJAX. Le mieu je pense c'est de voir la Béta test du site. => http://fef.jexiste.fr/fichiers2/BTS/

Merci de vos aides.
Modifié par iFef (20 Jul 2007 - 14:28)
Modérateur
Salut,

Une petite remarque : Le fait de mettre un commentaire avant le doctype fait passer ton site en mode Quirks sous IE6. Ce serait bien de les enlever. Smiley cligne

a écrit :
j'utilise de l'AJAX pour charger les differentes pages de mon site dans un div central et pour le formulaire de contact (ou autres)
Dans quel but ? Smiley smile

Avec PHP/CSS, tu peux conserver un design commun à plusieurs pages et en laissant tes pages indépendantes plutôt que d'essayer de tout charger dans une div, tu conserves l'historique de navigation, la possibilité de bookmarker, etc... Ajax ne te sert à rien à part rendre ton site inaccessible si tu n'as pas prévu d'alternatives et rétabli les fonctions de base du navigateur.
Modifié par koala64 (20 Jul 2007 - 14:28)
iFef a écrit :
Si j'ai bien compris: le probleme c'est que si on clique sur le bouton envoyer du formulaire il va se recharger et donc ne sera plus contenu dans la frame en AJAX.

Frame en AJAX ?

Dzzzzt, inaccessibilité détéctée... On ne recharge jamais juste une partie du contenu. On recharge toujours toute la page en entier, pour ne pas rencontrer 255 problèmes Smiley decu
koala64 a écrit :
Salut,

Une petite remarque : Le fait de mettre un commentaire avant le doctype fait passer ton site en mode Quirks sous IE6. Ce serait bien de les enlever. Smiley cligne

j'utilise de l'AJAX pour charger les differentes pages de mon site dans un div central et pour le formulaire de contact (ou autres)
Dans quel but ? Smiley smile

Avec PHP/CSS, tu peux conserver un design commun à plusieurs pages et en laissant tes pages indépendantes plutôt que d'essayer de tout charger dans une div, tu conserves l'historique de navigation, la possibilité de bookmarker, etc... Ajax ne te sert à rien à part rendre ton site inaccessible si tu n'as pas prévu d'alternatives et rétabli les fonctions de base du navigateur.


Pour plusieurs raisons (par encore fonctionnelles):
-Un chargement preliminaire qui charge toutes les images, scripts...
-Une animation en JS lors du chargement des differentes pages (principales)
-Puis pour ne pas recharger le contour des pages a chaque fois.

(Qu'est ce que Quirks ? )

Merci, fef
FlorentG a écrit :

Frame en AJAX ?

Dzzzzt, inaccessibilité détéctée... On ne recharge jamais juste une partie du contenu. On recharge toujours toute la page en entier, pour ne pas rencontrer 255 problèmes Smiley decu


Une autre version alternative arrivera bientot, mais la n'est pas la question.
Modérateur
a écrit :
-Puis pour ne pas recharger le contour des pages a chaque fois.
Ah ?! Pourquoi ? c'est mal ? Smiley rolleyes

Tout ce que tu décris s'ajoute en option. Te viendrait-il à l'idée de fermer ton paquet cadeau avant d'avoir mis le cadeau dedans ? Non ? Pourtant, c'est ce que tu fais. Cela dit, l'est peut-être joli l'emballage... Smiley ravi

a écrit :
Une autre version alternative arrivera bientot,
Après les options, le site ! Smiley lol

Plus sérieusement, l'Ajax, ça s'ajoute après... Là, tu es encore loin du stade où tu pourrais t'en servir mais visiblement, ça démmangeait.
De surcroît, tu le fais à mauvais escient en te servant d'Ajax pour tout et n'importe quoi ; c'est très à la mode.
Si tu avais conscience de la complexité d'intégrer un tel mécanisme et du gain (?) qui en découle, tu y réfléchirais à deux fois avant de te lancer là-dedans. Smiley cligne

a écrit :
mais la n'est pas la question.
Doit-on comprendre que tu codes pour toi et non pour tes visiteurs ? pardon pour la méprise... Smiley smile
Modifié par koala64 (20 Jul 2007 - 15:30)
le.troll a écrit :
il faut utiliser un if .. else : le if vérifie que, a minima, l'utilisateur a bien rempli le champ email, sujet et message (rajoute/enleve des conditions au besoin). Si c'est le cas il traite le formulaire.

sinon il affiche le formulaire.



<?php

if(isset($_POST["email"]) && isset($_POST["sujet"]) && isset($_POST["message"]))
{
     // ici tu met tout le code php de la page de traitement de formulaire
}
else
{
    echo ' entre ces deux quote tu met tout le html du formulaire ';
}

?>


n'oublie pas de modifier l'attribut action de la balise form pour rediriger le formulaire sur lui meme.



Malheureusement cela ne marche pas ... j'ai testé avec cela:
<?php
	if (isset($_GET["test"]))
	{
		echo "$test";
	}
	else
	{
		echo "<form id=\"test\" method=\"POST\" action=\"" . stripslashes($_SERVER["PHP_SELF"]) . "\">";
			echo "<input id=\"test\" type=\"text\" /><br/>";
			echo "<input id=\"envoyer\" type=\"submit\" value=\"Envoyer\" />";
		echo "</form>";
	}
?>


Une idée ?
ton formulaire est en POST, pas en GET, donc tu dois changer $_GET en $_POST.

je plussoie Koala64 sur l'emploi de l'ajax. Vu ton niveau je pense que tu construit ton archi à l'envers.