Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2862 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] bug avec internet explorer

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] bug avec internet explorer

n°1785102
lemb
Posté le 10-09-2008 à 16:28:58  profilanswer
 

bonjour,
j'essaye de faire un petit jeu en java script, dans une de mes page j'écris un code en java script avec du PHP, et tout marche bien sur firefox mais dés que j'essaye avec internet explorer certaines variables PHP ne s'affichent :
 
Voici mon code PHP:
 <?php
  include("connect.php" );
  $id=$_POST['idnv'];
  $sql=sprintf("SELECT * FROM `niveaux` WHERE `id`='%s' ",mysql_real_escape_string($id));
  $select = @mysql_query($sql);
  $it=mysql_fetch_array($select,MYSQL_NUM);
  $nom=$it[1];
  $auteur=$it[2];
  $niveau=$it[3];
  $diff=$it[4];
  $commentaire=$it[5];
  $aide=$it[6];
  $lennm=strlen($nom);
  $lenau=strlen($auteur);
  $lendf=strlen($diff);
 
   
 $tabniveau=explode(",",$niveau);
 echo("\n\t\t<SCRIPT laguage=\"javascript\">\nvar tabnv=[ " );
 for($i=1;$i<=20;$i++)
  {
   echo("[" );
   for($j=1;$j<=20;$j++)
    {
     $val=$tabniveau[($i-1)+20*($j-1)];
     if ($j!=20)
      echo("'{$val}'," );
     else
      echo("'{$val}'" );
     if($val=="0b" )
      {
       $xs=$i-1;$ys=$j-1;
       $sd=1;
      }
     else if($val=="0d" )
      {
       $xs=$i-1;$ys=$j-1;
       $sd=0;
      }
     else if($val=="0g" )
      {
       $xs=$i-1;$ys=$j-1;
       $sd=2;
      }
     else if($val=="0h" )
      {
       $xs=$i-1;$ys=$j-1;
       $sd=3;
      }
     if($val=="1" )
      {
       $xh=$i-1;
       $yh=$j-1;
      }
    }
   echo("],\n  " );
  }
 echo("];" );
 echo("\n\t\tvar xs=$xs;var ys=$ys;\n\t\tvar sd=$sd;\n\t\tvar xh=$xh;var yh=$yh;" );
 echo("\n\t\t</SCRIPT>\n" );
?>
 
 
je charge ma chaine de caractère depuis la base de donnée, que je transforme en matrice java script.
Puis je retiens certaine position qui m'intéressent que je retient dans des variable java script
 
 
 
 
 
 
 
 
 
Voici le code source que ce code génère lorsque j'ouvre la page avec firefox:
 
  <SCRIPT laguage="javascript">
var tabnv=[ ['3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','1','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','3','0','0','0','3','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','3','0','0','0','0','0','3','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','3','0','0','0','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','3','0','0','0','0','0','0','4','0','0','3','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0g','0','0','0','0','0','3','0','0','3'],
  ['3','0','0','0','0','0','0','0','0','0','0','0','0','3','0','0','0','0','0','3'],
  ['3','0','0','0','0','0','0','0','3','0','0','0','0','0','0','0','0','0','0','3'],
  ['3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3'],
  ];
  var xs=16;var ys=10;
  var sd=2;
  var xh=7;var yh=9;
  </SCRIPT>
 
 
 
 
 
 
 
 
 
 
Et voici le code source que ce code génère lorsque j'ouvre la page avec internet explorer:
 
  <SCRIPT laguage="javascript">
var tabnv=[ ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ['','','','','','','','','','','','','','','','','','','',''],
  ];
  var xs=;var ys=;
  var sd=;
  var xh=;var yh=;
  </SCRIPT>
 
 
 
Le plus abérant c'est que j'utilise ce même principe sur une autre page ou ça marche impeccablement sur les deux navigateurs.

mood
Publicité
Posté le 10-09-2008 à 16:28:58  profilanswer
 

n°1785211
Profil sup​primé
Posté le 10-09-2008 à 19:31:07  answer
 

ca sent le problème de cache. -> ctrl-F5

n°1786968
lemb
Posté le 15-09-2008 à 14:36:48  profilanswer
 

merci pour ta réponse mais malhereusement ca ne fonctionne pas :'(
 
c'est vrai que c'est un truc abérant et j'ai aussi pensé a un probléme de cache étand donné qu'a un moment ma page ressemblai a la version internet explorer ( bug php de ma part) peut être que ctrl F5 ne suffi pas a effecer le cache completement, j'ai aussi essayer de supprimer les fichiers temporaires mais ca ne donne rien.
 
ce bug se produit que ma page soit en ligne ou en localhost.
 
j'y comprend plus rien, m'enfin PHP devari générer la meme page peut importe le navigateur!!

n°1786971
skeye
Posté le 15-09-2008 à 14:39:37  profilanswer
 

et ton problème viendrait pas tout connement d'ailleurs? Genre la connexion à la base qui se fait pas? Tu ne contrôles aucun retour de fonction...


---------------
Can't buy what I want because it's free -
n°1786972
lemb
Posté le 15-09-2008 à 14:40:22  profilanswer
 

mince j'ai poster sans le vouloir, du coup je n'ai pas corriger les fautes ,et je n'ai pas relus, désolé.

n°1786977
lemb
Posté le 15-09-2008 à 14:43:47  profilanswer
 

skeye, je comprend pas ce que tu veut dire: en php je connais un peut le langage mais je suis pas un pro de ce qui se passe au niveau du serveur.. :s

n°1786979
skeye
Posté le 15-09-2008 à 14:47:37  profilanswer
 

lemb a écrit :

skeye, je comprend pas ce que tu veut dire: en php je connais un peut le langage mais je suis pas un pro de ce qui se passe au niveau du serveur.. :s


Va lire la doc des fonctions que tu utilises.
mysql_query, mysql_fetch_array te retournent des erreurs en cas de problème, tu ne le vérifies même pas.
Est-ce que tu es sûr que tu récupères  bien ton $_POST['idnv']?
Est-ce qu'il n'y a pas un soucis dans ton connect.php?
 
Bref, il y a beaucoup de choses à vérifier...


---------------
Can't buy what I want because it's free -
n°1786988
lemb
Posté le 15-09-2008 à 14:58:43  profilanswer
 

je fais les vérifications et je reviens ...   merci

n°1786994
matrixise
Posté le 15-09-2008 à 15:05:10  profilanswer
 

Ton probleme ne vient pas de PHP, mais simplement de ton code JavaScript que tu vas utiliser. PHP ne fait que générer un flux html et il est identiquement le même sur I.E. ou Firefox etc...

n°1787013
omega2
Posté le 15-09-2008 à 15:43:58  profilanswer
 

matrixise > Son problème ne vient pas de l'exécution du javascript, mais de la génération du javascript par le php.
La question est ensuite de savoir si son problème vient d'un bug dans son code php, d'une donnée mal envoyé ou pas envoyé par l'un des deux navigateurs, ou si la base de donnée ne retourne rien (valeur différente mais valide envoyé par les deux navigateurs).
 
lemb > Une des règles d'or en php : L'arobase est ton ennemie.
Non seulement l'arobase ne t'aide en rien mais en plus elle t'empêche de voir tes bugs. Enlève donc tous les arobase qui précèdent les noms de fonctions.
En fait, la bonne pratique, c'est d'afficher toutes les erreurs même les plus petites (les "notice" ) sur un serveur de test et de ne rien afficher sur le serveur de production (idéalement, détourner les messages d'erreurs vers un fichier de log avec si possible des détails supplémentaires)
 
PS : En passant, même si ça n'a aucun rapport avec ton problème, vérifie si la librairie mysqli ou bien pdo et pdo_mysql n'est/ne sont pas chargé. Les prepared_statement de ces librairies seront plus propre et un peu plus sécurisé (aucun risque d'oublier un "mysql_real_escape_string" ) que ton code actuel.

mood
Publicité
Posté le 15-09-2008 à 15:43:58  profilanswer
 

n°1787020
lemb
Posté le 15-09-2008 à 15:52:42  profilanswer
 

j'ai fai des vérification:
echo("<div style=\"position:absolute;top:500px;left:800px;\">select:$select,post:{$_POST['idnv']}</div>" );
 
sous firefox il m'affiche:
select:Resource id #4,post:50
 
donc nikel,
 
sous internet explorer il m'affiche
select:Resource id #4,post:
donc il reconnait le select mais le post est vide
 
ce qui n'est pas normal puisqu'il existe sous firefox!!

n°1787023
skeye
Posté le 15-09-2008 à 15:54:11  profilanswer
 

bon, on tient le coupable...montre le formulaire qui envoie sur cette page...


---------------
Can't buy what I want because it's free -
n°1787039
lemb
Posté le 15-09-2008 à 16:03:58  profilanswer
 

omega2, ce que tu dit à propos des @ est vrai, j'ai essayer de retirer le @ mais ça ne donne rien (aucune erreur).
 
merci pour ton conseil , je suis trés intéressé par la sécurité, je ne sais pas comment faire pour vérifier la librairie mysqli pdo et pdo_mysql , mais t'embête pas à m'expliquer ça, je chercherai par moi même comment faire...

n°1787053
lemb
Posté le 15-09-2008 à 16:14:57  profilanswer
 

le formulaire qui envoi sur cette page:
 
  <form id="fedit" method="post" action="./editeur.php" >
   <input id="idnved" name="idnv" type="hidden" value="">
  </form>
 
 
 
il est validé par un code javascript:
 
   function editer(id)
    {
     document.getElementById("idnved" ).value=id;
     document.getElementById("fedit" ).submit();
    }
 
 
la fonction editer se lance sur une balise qui est elle même généré en php (bon dieu!!)
 
echo("\n\t\t\t\t<td onmouseout='document.getElementById(\"charg\" ).style.display=\"none\";clearTimeout(timernolag);document.getElementById(\"terrain\" ).style.display=\"none\";lien(0);' onmouseover=\"apercu($it[0]);lien(1);\" onclick='jouer(\"$it[0]\" );'><a href=\"#\">$it[1]</a></td>" );
 
sans onmouseover et onmouseout:
echo("\n\t\t\t\t<td  onclick='jouer(\"$it[0]\" );'><a href=\"#\">$it[1]</a></td>" );
 
 
qui génére le code suivant
<td onmouseout='document.getElementById("charg" ).style.display="none";clearTimeout(timernolag);document.getElementById("terrain" ).style.display="none";lien(0);' onmouseover="apercu(25);lien(1);" onclick='jouer("25" );'><a href="#">mb</a></td>
 
sans onmouseover et onmouseoout:
 
<td onclick='jouer("25" );'><a href="#">mb</a></td>
 
 
 
je précise: j'utilise la dernière version de internet explorer donc le: document.GetElementById fonctionne

n°1787056
skeye
Posté le 15-09-2008 à 16:17:16  profilanswer
 

on parie combien que le problème est quelque part dans le code qui appelle editer()?
Montre le code javascript généré, au milieu du php c'est illisible.


Message édité par skeye le 15-09-2008 à 16:17:46

---------------
Can't buy what I want because it's free -
n°1787057
omega2
Posté le 15-09-2008 à 16:17:51  profilanswer
 

Soit

Code :
  1. <?php phpinfo(); ?>

soit encore mieux vu que tu auras que l'essentiel (la liste des extensions chargés)

Code :
  1. <?php print_r(get_loaded_extensions()); ?>


Dans les deux cas tu cherches mysqli et pdo_mysql dans le résultat. Ca te diras si l'un des deux ou les deux sont disponible .

n°1787062
lemb
Posté le 15-09-2008 à 16:22:23  profilanswer
 

oups je me suis tromper de balise excuse moi, mais oui à tous les coup c'est par la que ça foire, je commençai à bugger moi même ac ce truc merci,
 
 
voila la bonne balise:
echo("\n\t\t\t\t<td onmouseover=\"lien(1);\" onmouseout=\"lien(0);\" onclick='editer(\"$it[0]\" );'><a href=\"#\" );'>éditer</a></td>" );
 
qui génère le code suivant:
<td onmouseover="lien(1);" onmouseout="lien(0);" onclick='editer("50" );'><a href="#" );'>éditer</a></td>

n°1787066
lemb
Posté le 15-09-2008 à 16:23:54  profilanswer
 

merci omega2

n°1787068
skeye
Posté le 15-09-2008 à 16:25:00  profilanswer
 

Citation :

onclick='editer("50" );'


 
t'aurais pas inversé simples/doubles quotes, là?


---------------
Can't buy what I want because it's free -
n°1787086
lemb
Posté le 15-09-2008 à 16:36:00  profilanswer
 

non , j'ai vérifier avec un alert("" ) et la fonction récupère la bonne valeur.
 
je vais tester d'autre truc, je te dirais le résultat ( si j'ai trouvé ou non...)

n°1787103
gatsu35
Blablaté par Harko
Posté le 15-09-2008 à 16:48:29  profilanswer
 

déjà générer du Javascript depuis du PHP c'est totalement stupide.
 
Il y a largement moyen de faire plus propre et plus intelligent

n°1787106
lemb
Posté le 15-09-2008 à 16:51:09  profilanswer
 

:D j'ai trouvé merci beaucoup skeye
En fait j'ai plusieurs formulaire de ce type qui ont chacun un input de type hidden et qui ont chacun un id différent , jusque la ça devrai pas poser de problèmes, mais leur valeur de name étaient tous les même: name="idnv".
 
conclusion à la ligne:
document.get.ElementById('idnv').value="50";
sous internet explorer
il sélectionne le input avec name="idnv"
alors que sous firefox
il sélectionne le input avec id="idnv"

n°1787111
lemb
Posté le 15-09-2008 à 16:54:58  profilanswer
 

Gatsu35 explique : comment tu fait pour passer des valeurs venant du serveur à une variable java script?

n°1787121
lemb
Posté le 15-09-2008 à 17:01:29  profilanswer
 

Petite précision sur ma conclusion:
internet explorer récupéré en priorité le name="idnv"  
et si il n'en trouve pas il récupéré le id="idnv"

n°1787160
omega2
Posté le 15-09-2008 à 17:54:16  profilanswer
 

lemb > Ajax ou json (chargement après coup) ,
paramètre des balises html (depuis html5, les data-* sont réservé pour ce genre de chose)
...

n°1787168
lemb
Posté le 15-09-2008 à 18:07:25  profilanswer
 

Oui, mais je crois que c'est trop compliqué pour moi
m'enfin lors de mon prochain projet j'essayerais peut être de m'y intéresser, c'est vrai que ça doit être très pratique.
En attendant je fais à l'ancienne :p

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] bug avec internet explorer

 

Sujets relatifs
Statistiques Php/Sql Allégé[HTML/PHP] Test connexion routeur
[PHP MYSQL]Jointures de tablesPHP et Ports séries
[résolu] [PHP] Forcer le type d'une variable[PHP] Trier résultats sans effectuer une nouvelle recherche
[PHP] Formulaire ...variable PHP pour HTML
Extraction d'une information d'une base de donnée en PHPflash qui plante sous Internet explorer.FLASH + PHP
Plus de sujets relatifs à : [PHP] bug avec internet explorer


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR