Bonjour,

J'ai un problème de mise en page après une validation JavaScript d'un formulaire sur Internet explorer (dernière version), et non sur les autres navigateurs.
Ma page PHP est centré à la base, mais une fois la validation du formulaire effectué, ma page s'actualise mais est aligné à gauche...?

De quoi pourrai venir se problème ?

Merci
Alors ma page commence bien par un doctype, mais avant, il y a la fonction PHP qui appel le fichier de validation.
Ma page est encodé en UTF sans BOM.
Quand je déplace la fonction PHP en fin de page, le problème ne se pose plus...Mais ce n'est pas idéal...

<?php include('js/contact_fonction.php');?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
      "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
Je ne suis pas certain de comprendre la logique de tout ça.

Tu as une validation JavaScript dans un fichier php ?

Si c'est un fichier .js avec du javascript, la manière de l'inclure n'est pas la bonne, ça devrait être dans une balise <script src="monfichier.js"></script>

As-tu un exemple en ligne de ton site ?
a écrit :
Je ne suis pas certain de comprendre la logique de tout ça.

Tu as une validation JavaScript dans un fichier php ?

Si c'est un fichier .js avec du javascript, la manière de l'inclure n'est pas la bonne, ça devrait être dans une balise <script src="monfichier.js"></script>

As-tu un exemple en ligne de ton site ?


Bonjour,
Alors la validation Javascript est bien entre des balises "script", le fichier "PHP" sert à vérifier les informations pour pouvoir l'envoyer.
Ex:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
      "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

  <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
  <title>Contact</title>
  
  <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" media="screen, print, projection" href="css/contact.css" />

  <script type="text/javascript" src="js/contact.js"></script>
  <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

  <script type="text/javascript"> 
    $(document).ready(function(){ 
        $(document).pngFix(); 
    }); 
  </script>   
  
  <script type="text/javascript">
  function initialize() {
    var latlng = new google.maps.LatLng(47.399, 0.676);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map"),
        myOptions);
  }
  </script>

</head>

<body onload="initialize()">

(contenu de la page)

</body>
</html>
<?php include('js/contact_fonction.php');?>
Salut

Je vois toujours pas ce que fait ton fichier php Smiley smile

Si c'est de la validation côté serveur de ton formulaire, pourquoi ne le mets tu pas dans le "action" du form ?

Bref, est-ce qu'on peut savoir le contenu du mystérieux fichier, qu'on voit si c'est la source du problème Smiley smile
Smiley cligne Oui je poste le contenu du fichier "contact_fonction.php", merci !
Mon site n'est pas encore en ligne, mais ca ne saurait tardé...





<?php
			$EMAIL_MAX = 2500;
			$SMS_MAX = 120;
		
		function cleanUp($str_to_clean, $newlines, $spaces){
		
			$bad_chars = array('\r', '\t', ';');
		
			if(!$newlines){array_push($bad_chars, '\n');}
			
			if(!$spaces){array_push($bad_chars, ' ');}
			
			$str_to_clean_a = str_replace($bad_chars, '', $str_to_clean);
			$str_to_clean_b = strip_tags($str_to_clean_a);
			return $str_to_clean_b;
		}
		
		function checkEmail($email) {
			if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {return false;}
			return true;
		}
		function checkURL($url) {
			if(!eregi("^http:\/\/", $url)) {return false;}
			return true;
		}

	if(isset($_POST["submitForm"])){

		$_name = cleanUp($_POST["sender_name"], false, true);

		$_email = cleanUp($_POST["sender_email"], false, false);

		$_subject = cleanUp($_POST["sender_subject"], false, true);

		$_message = cleanUp($_POST["sender_message"], true, true);

		
		$_body = "Contact form\n\n";
		
		if($_name){
			$_body .= "NAME: $_name\n\n";
		}
		
		if($_email){
			$_body .= "EMAIL: $_email\n\n";
		}
		
		if($_url){
			$_body .= "URL: $_url\n\n";
		}
		
		if($_phone){
			$_body .= "PHONE: $_phone\n\n";
		}
		
		if($_message){
		
			if(strlen($_message) > $EMAIL_MAX){$_message= substr($_message, 0, $EMAIL_MAX);}else{$_message = $_message;}
			if(strlen($_message) > $SMS_MAX){$_message2 = substr($_message, 0, $SMS_MAX);}else{$_message2 = $_message;}
		}
		
		$_to = array();

		$_to[] = "xxxxxxxx@xxxx.xxxx";
		
		if(!$_subject){$_subject = "Contact form";}

		if(!$_name){$_name = "CONTACT FORM";}
		if(!$_email){$_email = $_name;}
		
		//set the headers
		$_header = "From: $_name < $_email >" . "\r\n" .
    "Reply-To: ".$_email."\r\n" .
    "";
		
		//we can send up to 2 emails (EMAIL and/or SMS)
		if(count($_to) > 2){ $_to = array_slice($_to,0,2);}
		
		for($i=0;$i<count($_to);$i++){
			
			//get the correct message, based on where it is delivering to
			if(strstr($_to[$i],"xxxxx;fr")){$_text = $_body.$_message2;}else{$_text = $_body.$_message;}
			
			//send the email(s)
			mail($_to[$i], $_subject, $_text, $_header);
			
		}
		
		echo "<script type=\"text/javascript\">window.onload = function(){showThanks(thanks_message);}</script>";
	}
	?>

Modifié par Glasgow (25 Oct 2010 - 17:45)
Je suis prêt à parier que c'est cette ligne le problème.

echo "<script type=\"text/javascript\">window.onload = function(){showThanks(thanks_message);}</script>";

Puisque c'est du code HTML mal placé ( on parle avant le doctype ici )

Si tu enlèves la ligne de ton fichier et que tu refais tes tests, est-ce que ça marche ?

Sinon, je ferais ça plus simple Smiley cligne

Dans ton form tu ajoutes un truc comme

<form action="js/contact_fonction.php">

Pis à la fin de ta validation serveur tu mets un
header("Location: welcome.php?msg=merci");

Et avec une condition quelque part du genre



if($_GET['msg']=='merci'){
	echo('Merci beaucoup de votre message');
}


Mais bon, à partir de là faudrait voir la meilleure solution mais ça ce serait un autre sujet Smiley smile

Reste que si tu enlèves le écho de ta balise script, je suis pas mal sur que tu auras pas le même problème.
Merci pour ces infos!
Tu as raison le fait de faire un "echo" avant le doctype fausse la mise en page après validation...
Si j'enlève le "echo" le message merci ne s'affiche pas, mais ça marche Smiley smile
Donc ce que je vais faire: après validation -> redirection vers une autre page "merci..."

Merci beaucoup !
Modifié par Glasgow (13 Oct 2010 - 17:29)
L'explication est simple : l'ajout de tout bout de texte (y compris un commentaire HTML) avant le doctype fait basculer IE en mode Quirks.