BUG selon Navigateur

Eléphanteau du PHP | 22 Messages

24 avr. 2012, 16:09

Bonjour,

J'ai un petit soucis sur ma boutique en ligne, en effet, lorsque l'utilisateur se trouve sur la fiche produit sur Google Chrome et IE et qu'il change la couleur, le stock de celui-ci s'affiche:

Exemple: http://www.shilton.fr/vente-en-ligne-sh ... ollege.php

J/marron S X XXL et lorsque l'utilisateur va sur le menu déroulant et choisit une autre couleur comme l'écru, de nouvelles tailles s'affichent S M L XL XXL

Apparemment c'est dû au rafraichissement de la page, sous firefox ça se fait pas...Est-il possible de corriger ce bug?

J'ai essayé de changer onChange par Onclick mais cela ne marche pas!
<select name="ref" onChange="selection_couleur()" style="background-color:#777777;color:white;border:1px solid #777777;FONT-FAMILY: Overlock;">
<?
$fin=count($couleurS);
for ($c=0; $c<$fin; $c++)
{
$couleur=trim($couleurS[$c]);
$selected="";
$vcouleur=$reference." ".$couleur;
if ($vcouleur==$select_couleur) {$selected="SELECTED";}
$fcouleur=strtoupper($couleur);
print ("<option $selected value=\"$vcouleur\">$fcouleur</option>\n");
}
?>
</select>		
Merci d'avance pour vos éventuelles réponses.

Cordialement.

ViPHP
xTG
ViPHP | 7331 Messages

24 avr. 2012, 19:30

Ce n'est pas un problème PHP, c'est du code serveur.
Il faudrait mieux regarder du côté de la fonction selection_couleur() et ce qu'elle a dans le ventre.

Eléphanteau du PHP | 22 Messages

24 avr. 2012, 20:06

Quelles sont les manipulations à effectuer s'il te plait?

A vrai dire, j'ai conçu le site de A à Z excepté le logiciel de stock en ligne qu'on a sous-traité, ils n'arrivent pas eux-même à le débugguer...est-ce vraiment possible de le faire?

Merci pour ta réponse.

ViPHP
xTG
ViPHP | 7331 Messages

24 avr. 2012, 21:45

Extrait du code de ta page :

Code : Tout sélectionner

<script language="JavaScript"> function selection_couleur() { envoi_couleurs.select_couleur.value=commande.ref.options[commande.ref.selectedIndex].value; envoi_couleurs.submit(); } </script>
Donc oui il y a un rechargement forcé du fait de la soumission du formulaire.
Mais on obtient une erreur JS => envoi_couleurs is not defined
Ce n'est pas ainsi qu'on appel un formulaire mais ainsi :

Code : Tout sélectionner

document.forms["envoi_couleurs"]

Eléphanteau du PHP | 22 Messages

25 avr. 2012, 01:21

Donc je dois remplacer
{
envoi_couleurs.select_couleur.value=commande.ref.options[commande.ref.selectedIndex].value;
envoi_couleurs.submit();
}
par
document.forms["envoi_couleurs"]
si j'ai bien compris, et ça devrait marcher?

ViPHP
xTG
ViPHP | 7331 Messages

25 avr. 2012, 07:14

Non c'est pour remplacer envoi_couleurs.
On résout rarement un problème avec moins de code qu'il n'y a à l'origine. :mrgreen:

Eléphanteau du PHP | 22 Messages

25 avr. 2012, 08:51

:mrgreen: Ca c'est sûr...sinon ce serait trop facile..:

Donc je récapitule, je remplace donc envoi_couleurs par document.forms["envoi_couleurs"], ce qui donne:

<script language="JavaScript">
function selection_couleur()
{
document.forms["envoi_couleurs"].select_couleur.value=commande.ref.options[commande.ref.selectedIndex].value;
document.forms["envoi_couleurs"].submit();
}
</script>
That's good?

ViPHP
xTG
ViPHP | 7331 Messages

25 avr. 2012, 10:00

Oui c'est cela, il me semble aussi qu'il va falloir remplacer commande par document.forms["commande"] si je me souviens bien de la structure de ton code et que c'est bien l'attribut name d'un formulaire.

Eléphanteau du PHP | 22 Messages

25 avr. 2012, 10:20

Cela ne marche pas...je vais te donner le code en entier:
<?
$refbase=trim($reference);
$couleurS=null;
$vu_couleurS=null;
$tailleS=null;
$fileS=file("http://www.alpesite.net/cgi/chistera23b_stock.txt");
$fin=count($fileS);

 for ($c=0; $c<$fin; $c++)
 {
 $ligne=trim($fileS[$c]);
 list($ref,$stock)=explode("=",$ligne);
 list($flag_ref,$suite)=explode("#",$ref);
 $flag_ref=trim($flag_ref);
 list($ref1,$taille)=explode(" - ",$flag_ref);
 list($reference,$reste)=explode(" ",$ref1);
 $reference=trim($reference);
 $vref=strtolower($reference);
 $refbase=strtolower($refbase);
 
if ($refbase==$vref)
 {
if ($stock>0)
{
 $couleur=substr($ref1,strlen($reference),strlen($ref1));
 $couleur=trim($couleur); 
 $taille=trim($taille); 
 if ($vu_couleurS[$couleur]=="") 
{
$couleurS[]=$couleur;
$vu_couleurS[$couleur]="oui";
}
 $vreference=$reference;
 $tailleS[$vreference." ".$couleur][]=$taille;
}
} 
}
$reference=$vreference;

if (count($_POST)>0)
{
while (list($key, $val) = each($_POST))
 {
$val=trim($val);
if ($key=="select_couleur") {$elect_couleur=$val;}
}
}

if ($select_couleur=="") {$select_couleur=$reference." ".$couleurS[0];}


?>

<script language="JavaScript">
function selection_couleur()
{
document.forms["envoi_couleurs"].select_couleur.value=document.forms["commande"].ref.options[commande.ref.selectedIndex].value;
document.forms["envoi_couleurs"].submit();
}
</script>
J'ai modifié juste ci-dessus comme tu me l'as dis..peut-être qu'il y a des modifications à faire aussi dans les autres fichiers?

le fichier form
<form name="envoi_couleurs" method="POST">
<input type="hidden" name="select_couleur">
</form>

le fichier couleur
<select name="ref" onChange="selection_couleur()" style="background-color:#777777;color:white;border:1px solid #777777;FONT-FAMILY: Overlock;">
<?
$fin=count($couleurS);
for ($c=0; $c<$fin; $c++)
{
$couleur=trim($couleurS[$c]);
$selected="";
$vcouleur=$reference." ".$couleur;
if ($vcouleur==$select_couleur) {$selected="SELECTED";}
$fcouleur=strtoupper($couleur);
print ("<option $selected value=\"$vcouleur\">$fcouleur</option>\n");
}
?>
</select>																	

et le fichier tailles:
<select name="refsupp" style="background-color:#777777;color:white;border:1px solid #777777;FONT-FAMILY: Overlock;">
<?
 $tfin=count($tailleS[$select_couleur]);
 for ($t=0; $t<$tfin; $t++)
 {
 $taille=trim($tailleS[$select_couleur][$t]);
print ("<option value=\"$taille\">Taille $taille</option>\n");
}
?>
</select>
																	
Merci de tes réponses!

ViPHP
xTG
ViPHP | 7331 Messages

25 avr. 2012, 10:25

Il y a un autre "commande" à remplacer dans la fonction. ;)

Eléphanteau du PHP | 22 Messages

25 avr. 2012, 10:57

XTG, j'te remercie vraiment pour ton aide...cela est désormais fonctionnel.

Je remarque en fait un bug sur IE, en effet, il intervient parce que la couleur ou la taille reste sélectionnée..du coup lorsque l'utilisateur veut à nouveau sélectionner une autre couleur, ça bug.

Y a t-il une petite manipulation à faire pour que celui-ci ne reste pas sélectionné (j'utilise le terme "sélectionné" dans le sens où celui-ci est entourée d'une case bleu).

Je remercie encore une fois pour l'aide que tu m'as apporté.

Cordialement.

ViPHP
xTG
ViPHP | 7331 Messages

25 avr. 2012, 11:27

J'ai effectué un test sous IE 9.0.8 et je n'ai pas compris de quoi tu parlais.

Eléphanteau du PHP | 22 Messages

25 avr. 2012, 11:58

C'est certainement parce que t'as la nouvelle version...en fait lorsque je sélectionne une couleur, la sélection reste

Image

et lorsque je veux choisir une autre couleur, il y a un bug qui se fait, dans le sens où le menu se déroule et disparaît immédiatement après. Pareil pour les tailles, et je voulais si c'était possible qu'au moment que la personne sélection une couleur, la sélection ne reste pas...mais je pense pas...parce que ça doit être spécifique à une seule version d'Internet Explorer.

Et ce bug se corrige en appuyant à côté, c'est à dire en déselectionnant, un peu bizarre.