[php] probleme compatibilité IE/FF/S/M/GC/O

Résolu
maxland -  
maxland Messages postés 22 Statut Membre -
Bonjour tout le monde,
comme le titre ne l'indique pas forcement,
j'ai un probleme de compatibilité certes mais avec
6 navigateurs donc Internet Explorer, FireFox, Safari,
Maxthon, Goggle Chrome et Opera.

personnellement je me sers d'opera comme vous pourrez le constatez en bas ...
j'essaie de coder un site mais il ne marche parfaitement qu'avec opera 9, IE7 et maxthon 2
et j'ai juste un probleme de passage de variables apparement avec les autres.

un formulaire passe plusieurs variables d'une page A a une page B, puis C, puis D, etc ...
tout marche avec les 3 premiers navigateurs mais l'operation s'arrete dès la premiere page avec les autres.

en fait c'est un test a la page B qui verifie si tous les champs venant de la page A sont complets (peu importe le contenu) et qui, si ils le sont, affiche une phrase de confirmation.
si ils ne le sont pas tous, il affiche une phrase disant que les infos ne pas completes.
et enfin si il n'y a aucun champs rempli, il n'affiche rien.

je vous met une partie de mon code pour ceux qui ne voient pas ce que je veux dire :

- Page A contenant les infos et les envoyant vers la page B par formulaire

echo '  
<tr><td colspan="2" align="center"><form method="post" action="pageB.php"><br /></td></tr>

<tr><td colspan="2" align="center">Adresse de livraison différente </td></tr>

<tr><td colspan="2" align="center"> <i>(tous les champs sont obligatoires, sauf le complément d\'adresse)</i> <br /><br /></td></tr>

<tr><td colspan="2" align="center">M. &nbsp;<input type="radio" name="liv_civ" value="M"> Mme. &nbsp;<input type="radio" name="liv_civ" value="Mme"> Mlle. &nbsp;<input type="radio" name="liv_civ" value="Mlle"></td></tr>

<tr><td colspan="2" align="center">Nom : <input type="text" name="liv_nom">&nbsp; Prénom : <input type="text" name="liv_pnom"></td></tr>

<tr><td colspan="2" align="center">Adresse : <input type="text" name="liv_adr"> &nbsp; Complément d\'adresse : <input type="text" name="liv_adc" size="15"></td></tr>

<tr><td colspan="2" align="center">Code postal : <input type="text" name="liv_cp"> &nbsp; Ville : &nbsp; <input type="text" name="liv_ville"></td></tr>

<tr>
<td align="left"><br /><a href="panier.php"><img name="continuer" SRC="images/navigation/retour-out.jpg" onmouseover=this.src="images/navigation/retour-in.jpg" onmouseout=this.src="images/navigation/retour-out.jpg" border="0" alt="Retour" onclick="panier.php"/></a></td>

<td align="right"><br /><a href="livraison.php" ><input type="image" name="continuer" SRC="images/navigation/continuer-out.jpg" onmouseover=this.src="images/navigation/continuer-in.jpg" onmouseout=this.src="images/navigation/continuer-out.jpg" border="0" alt="Continuer" onclick="livraison.php"/></a></td>
</tr>
</form>
</table>';


- Page B recevant les infos de la Page A et verifiant les champs et affichant une phrase en conséquence :

	$liv_civ = $_POST['liv_civ'];
	$liv_nom = 	$_POST['liv_nom'];
	$liv_pnom = $_POST['liv_pnom'];
	$liv_adr = 	$_POST['liv_adr'];
	$liv_cp = $_POST['liv_cp'];
	$liv_ville = $_POST['liv_ville'];
	$liv_adc = $_POST['liv_adc'];

// code html et php \\
?>

<?php // test et affichage \\
if (empty($liv_civ) && empty($liv_nom) && empty($liv_pnom) && empty($liv_adr) && empty($liv_cp) && empty($liv_ville))
{}
else 
if (!empty($liv_civ) && !empty($liv_nom) && !empty($liv_pnom) && !empty($liv_adr) && !empty($liv_cp) && !empty($liv_ville)) 
echo '<tr><td align="center" colspan="2"> <font color="red"><i>Adresse de livraison alternative prise en compte.</i></font></td></tr>';

else echo '<tr><td align="center" colspan="2"><font color="red"><i> Il manque des informations pour l\'adresse de livraison alternative,<br />l\'adresse de livraison sera donc la m&ecirc;me que celle de facturation.</i></font></td></tr>';
?>


et normalement ca se repete sur 3-4 pages mais avec firefox, safari et gchrome ca s'arrete au premier passage de variables et je ne comprends pas pourquoi.

merci d'avance de votre aide
Configuration: Windows XP
Opera 9.64

17 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bon, à mon avis, c'est là qu'il y a un soucis :
    <a href="livraison.php" ><input type="image" name="continuer" SRC="images/navigation/continuer-out.jpg" onmouseover=this.src="images/navigation/continuer-in.jpg" onmouseout=this.src="images/navigation/continuer-out.jpg" border="0" alt="Continuer" onclick="livraison.php"/></a>


    Si tu mets ce genre de chose à la place ?
    <button type="submit" name="continuer" style="border-style:none; background-color:inherit; padding:0px;"><img src="images/navigation/continuer-out.jpg" onmouseover='this.src="images/navigation/continuer-in.jpg"' onmouseout='this.src="images/navigation/continuer-out.jpg"' title="continuer" alt="continuer" /></button>
    1
  2. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    les onmouseover et onmouseout, c'est pas sur l'image mais sur le bouton :)

    exemple :

    <button type="submit" onmouseover='document.getElementById("limage").src="images/navigation/continuer-in.jpg"' onmouseout='document.getElementById("limage").src="images/navigation/continuer-out.jpg"' name="continuer" style="border-style:none; background-color:inherit; padding:0px;">
    <img src='images/navigation/continuer-out.jpg' id='limage' />
    </button>
    1
  3. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Normalement, une balise TABLE ne peut pas contenir de balise FORM.
    Certains navigateurs sont permissifs, et l'interprètent bien. D'autres s'en tiennent aux règles. Du coup, ton formulaire qui se termine de cette façon : "</tr></form></table>" n'est pas valide pour certains navigateurs.
    Il faudrait sortir le <form> du <table> : "</tr></table></form>".

    Voir aussi à l'ouverture de ces balises, dont tu n'as pas donné le code, s'il faut aussi inverser. Normalement, <form> s'ouvre avant <table>.

    Xavier
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. maxland
     
    salut, merci de ta reponse mais le probleme persiste.
    j'ai fais comme tu m'as conseillé et j'ai sorti les balises form
    de la <table> mais rien ne change.

    y aurait il des regles particulieres a respecter concernant les formulaires
    sous chrome safari et firefox ?
    0
  6. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    A priori non.
    Tu peux donner le code source complet de ta dernière version ?
    0
  7. maxland
     
    bien sur, voila ce qui se trouve entre les balises <body> :

    <?php 
    
    
    	if(isset($_SESSION['code']))
    	{
    	
    	echo '	<form method="post" action="livraison.php"><table align="center" border="0">
    					<!--<tr><td>Poids total : '.$_SESSION['poids'].'g &nbsp; / &nbsp; Montant total : '.$_SESSION['montant'].'&euro;</td></tr>-->
    			<!-- si il y a au moins une erreur, on affiche la liste en haut du formulaire -->';
    					
    echo '					<tr><td align="center" colspan="2" class="titre"><font color="white"><h2>Etape 2 : Vos informations personnelles</h2></font></td></tr>
    					<tr>
    						<td colspan="2" align="center"><br />Votre adresse de facturation : </td>
    					</tr>
    					<tr><td colspan="2" align="center"><font color="red"> <i>(par défaut, l\'adresse de livraison sera celle de facturation) </i></font><br /><br /></td></tr>
    					<tr>
    						<td colspan="2" align="center">Nom et Pr&eacute;nom : &nbsp;';
    								if($_SESSION['civ'] == "M") {echo 'M.';} 
    								
    								if($_SESSION['civ'] == "Mme") {echo 'Mme.';} 
    								
    								if($_SESSION['civ'] == "Mlle") {echo 'Mlle.';}
    			echo	'	
    						'.$_SESSION['nom'].' &nbsp;
    						'.$_SESSION['prenom'].'
    						</td>
    					</tr>
    					
    					<tr>
    						<td colspan="2" align="center">Adresse : &nbsp;'.$_SESSION['adr1'].'</td>
    					</tr>';
    					
    			if(isset($_SESSION['adr2']))
    			{			
    			echo '	<tr>
    						<td colspan="2" align="center">Compl&eacute;ment d\'adresse : &nbsp;'.$_SESSION['adr2'].'</td>
    					</tr>';
    			}
    			echo '	<tr>
    						<td colspan="2" align="center">Code Postal et Ville : &nbsp;'.$_SESSION['cpostal'].' &nbsp;
    						'.$_SESSION['ville'].'</td>
    					</tr>';
    					
    			if(!empty($_SESSION['telf']))
    			{ 
    			echo '	<tr>
    						<td colspan="2" align="center">Numéro de téléphone fixe : '.$_SESSION['telf'].'</td>
    					</tr>';
    			}
    			
    			if(!empty($_SESSION['telp']))
    			{ 
    			echo '	<tr>
    						<td colspan="2" align="center">Numéro de téléphone portable : '.$_SESSION['telp'].'</td>
    					</tr>';
    			}
    		echo '  <tr><td colspan="2" align="center"><br /></td></tr>
    				<tr><td colspan="2" align="center">Adresse de livraison différente </td></tr>
    				<tr><td colspan="2" align="center"> <i>(tous les champs sont obligatoires, sauf le complément d\'adresse)</i> <br /><br /></td></tr>
    				<tr><td colspan="2" align="center">M. &nbsp;<input type="radio" name="liv_civ" value="M"> Mme. &nbsp;<input type="radio" name="liv_civ" value="Mme"> Mlle. &nbsp;<input type="radio" name="liv_civ" value="Mlle"></td></tr>
    				<tr><td colspan="2" align="center">Nom : <input type="text" name="liv_nom">&nbsp; Prénom : <input type="text" name="liv_pnom"></td></tr>
    				<tr><td colspan="2" align="center">Adresse : <input type="text" name="liv_adr"> &nbsp; Complément d\'adresse : <input type="text" name="liv_adc" size="15"></td></tr>
    				<tr><td colspan="2" align="center">Code postal : <input type="text" name="liv_cp"> &nbsp; Ville : &nbsp; <input type="text" name="liv_ville"></td></tr>
    				<tr>
    					<td align="left"><br /><a href="panier.php"><img name="continuer" SRC="images/navigation/retour-out.jpg" onmouseover=this.src="images/navigation/retour-in.jpg" onmouseout=this.src="images/navigation/retour-out.jpg" border="0" alt="Retour" onclick="panier.php"/></a></td>
    					<td align="right"><br /><a href="livraison.php" ><input type="image" name="continuer" SRC="images/navigation/continuer-out.jpg" onmouseover=this.src="images/navigation/continuer-in.jpg" onmouseout=this.src="images/navigation/continuer-out.jpg" border="0" alt="Continuer" onclick="livraison.php"/></a></td>
    				</tr>
    				
    				</table></form>';
    	}
    	else 
    	echo 	'<table border="1" align="center">
    				<tr>
    					<td>
    						<table>
    							<tr>
    								<td><h3 align=center><font color="black">Si vous n\' êtes pas encore client(e), <br />vous pouvez vous inscrire <a href="inscription.php" style="color:#A91101;">ICI</a></font></h3></td>
    							</tr>
    						</table>
    					</td>
    					<td><h3 align=center><font color="black">Sinon si vous êtes déjà inscrit(e), <br>veuillez vous identifiez à coté --></font></h3></td>
    				</tr>
    			</table>';
    ?>
    0
  8. maxland
     
    merci mais ca ne fonctionne toujours pas,
    serait-ce a cause du this.src où je ne met pas de quote ni de guillemets ?
    j'ai testé avec les guillemets ca fais rien, pour les quote je ne sais
    pas comment faire la concatenation avec un echo ' ';

    en tout cas encore merci de ton aide
    0
  9. maxland
     
    probleme toujours pas resolu ...

    si quelqu'un a une idée je suis preneur, merci
    0
  10. Heryu Messages postés 645 Statut Membre 62
     
    Est-ce que W3C ne fait pas en sorte à ce que les erreurs qu'il trouve, c'est pour que le site s'adapte sur toutes les plateformes ?
    0
  11. Archeus01 Messages postés 1566 Date d'inscription   Statut Membre Dernière intervention   455
     
    Toutes... Non parce que certains navigateurs (IE pour ne citer que lui) ne respectent pas obligatoirement les standars, mais la plupart oui.
    Essaye de passer le code html de des pages de ton site au validateur http://validator.w3.org/ et de corriger ce qui ne respecte pas les standards...
    0
  12. maxland
     
    un grand merci jeangilles ca marche parfaitement :)
    merci a toi aussi Reivax962, mais c'est bizarre que ta solution, qui ressemble
    a celle de jeangilles, ne fonctionnait pas ...

    et en ce qui concerne heryu, deja je ne comprends pas ta phrase
    et en plus w3c ne m'a jamais aidé a part a remplacer mes align=center par align="center" ...

    en tout cas merci de votre aide a tous
    0
  13. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    et en plus w3c ne m'a jamais aidé a part a remplacer mes align=center par align="center"

    ben si, justement, ca te permet d'être sur que ton codemarche sur tous les navigateurs sans avoir forcément besoin de tester sur tous ! (enfin pour la partie HTML et CSS tout du moins)
    et c'a marchera aussi normalement, sauf gros bouleversement, sur les prochaines versions des navigateurs si les normes sont correctement respectées
    0
  14. Heryu Messages postés 645 Statut Membre 62
     
    Je ne dit pas que des bêtises ^^
    0
  15. maxland
     
    ouais d'accord mais si c'est juste des oublis de guillemets ca va pas
    empecher le site de fonctionner quoi.

    au fait Archeus01, d'apres w3c justement, sur la page en ligne (donc non corrigée puisque je travaille en local)
    j'ai seulement 14 erreurs du type "center" ou <br> au lieu de <br />, que j'ai corrigé dans la nouvelle
    version donc ...
    0
  16. maxland Messages postés 22 Statut Membre
     
    hum ...

    c'est encore moi et oui :)

    le code de jeangilles marche parfaitement, sauf que dans IE et Maxthon ca me fait un vilain
    bouton gris plus grand que mon image avec mon image par dessus ...

    j'aimerais savoir si ce serait possible de rendre transparent uniquement le bouton
    en arriere plan et laisser l'image par dessus visible,
    j'ai testé opacity:0.0; filter:alpha(opacity=0); mais ca rend la case completement transparente ...

    désolé de vous embeter encore une fois ;)

    au cas ou vous vous demandez oui j'ai chercher dans le forum et dans google, apres si je suis aveugle c'est pas ma faute hein :)
    0
  17. maxland Messages postés 22 Statut Membre
     
    je me repond moi meme lol :)

    j'ai resolu tout le probleme finalement, et c'etait une erreur quelque peu invisible
    etant donné que vous etes passé a coté :) :)

    l'erreur venait du lien a href associé au bouton, fallait tout simplement
    enlever le a href et maintenant ca marche sans button type submit ...

    je met le code du bouton au cas ou :

    <td align="right"><br /><input type="image" name="continuer" SRC="images/navigation/continuer-out.jpg" onmouseover=this.src="images/navigation/continuer-in.jpg" onmouseout=this.src="images/navigation/continuer-out.jpg" border="0" alt="Continuer" onclick="livraison.php"/></td>

    c'est juste ma ligne de code du debut mais sans <a href="paiement.php"> </a> c'est tout

    merci de votre aide les gars
    0