Problème avec des variables passées de PHP vers javascript. [Résolu]

Signaler
Messages postés
3
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
28 juillet 2008
-
Messages postés
3
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
28 juillet 2008
-
Bonjour à tous,

Le script ci dessous permet de changer de facon aléatoire la couleur d'une DIV lorsque l'on clique dessus.
Les couleurs disponibles se trouvent dans une table MYSQL, que je consulte pour alimenter un tableau javascript "ListeDesCouleurs".

Le problème est le suivant :
   - Dans ma variable javascript "ListeDesCouleurs[numerodecouleur]" je récupére bien le nom de la couleur (donc la partie implémentation de cette variable via PHP fonctionne) mais par contre cela ne change pas la couleur de la DIV .
   
Par contre si j'ajoute la ligne de commande suivante :   var ListeDesCouleurs = new Array ("yellow", "red", "lime", "black", "blue", "darkgreen");  en début de script (cela remplace donc le tableau créé en PHP) cela fonctionne !!!!!!!!

D'ou vient mon problème ????? je cale .........
A l'avance Merci de votre aide..........

La table :

-- Structure de la table `couleur`
--


CREATE TABLE `couleur` (
  `FOND` varchar(20) NOT NULL default '',
  `TEXTE` varchar(20) NOT NULL default '',
  UNIQUE KEY `FOND` (`FOND`),
  KEY `TEXTE` (`TEXTE`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


--
-- Contenu de la table `couleur`
--


INSERT INTO `couleur` VALUES ('yellow', 'black');
INSERT INTO `couleur` VALUES ('red', 'black');
INSERT INTO `couleur` VALUES ('lime', 'black');
INSERT INTO `couleur` VALUES ('black', 'white');
INSERT INTO `couleur` VALUES ('blue', 'white');
INSERT INTO `couleur` VALUES ('darkgreen', 'white');

Le script :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>


<script type="text/javascript">
function changecouleur(obj)
  {
  var nbcouleurs=ListeDesCouleurs.length;


  numerodecouleur= Math.floor(Math.random() * nbcouleurs-1)+1;
   
  el=document.getElementById(obj);                          
  el.style.backgroundColor=ListeDesCouleurs[numerodecouleur];
  }
</script>
</head>



<?php
ini_set ('max_execution_time', 0); // Aucune limite d'execution
mysql_connect("localhost", "root", "");
mysql_select_db("gestion du parc");


$couleurs=mysql_query("SELECT fond FROM couleur")   or die('Erreur SQL !'.$sql.'
'.mysql_error());
$n=0;
?>




 <!-- ----------  Déclaration du tableau dans javascript et copie des données -----  -->
<script type="text/javascript">
var ListeDesCouleurs = new Array(
<?php
while ($ligne=mysql_fetch_row($couleurs))
   {
   echo "new Array('".$ligne[0]."'),";
   $n++;
   }
?>
new Array(""));
</script>
<!-- ---------------  Déclaration du tableau dans javascript et copie des données -----  -->


<?php
for($x=0; $x<$n; $x++)
    {
  $position=$x * 60;
?>
  
" style="position:absolute; left:50px;top:<?php echo $position ?>px;height:10px;width:150px; background-color:blue;" onclick="changecouleur(<?php echo $x ?>);"> Couleur bleu

<?php
  }
?>  

</html>

5 réponses

Messages postés
3
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
28 juillet 2008

Ca y est j'ai trouvé , l'erreur se trouvait dans la déclaration du tableau javascript en PHP j'ai remplacé la partie de code par celui-ci :

<?php
if($ligne=mysql_fetch_row($couleurs)) echo """.$ligne[0].""";
while ($ligne=mysql_fetch_row($couleurs))
   {
   echo ","".$ligne[0].""";
   $n++;
   }
?>
);

Merci pour votre aide car c'est en regardant le source que vous m'avez demandé que j'ai été mis sur la voie.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,
et si tu nous mettais la page html résultante créée par le php ?
déjà : on n'a pas ta base de données ! alors deviner ce que cela génère....
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
30
Salut,

Bultez ++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
3
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
28 juillet 2008

Bonjour,
Désolé c'est la première fois que je poste, ci dessous la page résultante créé par le php sous IE.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>

<script type="text/javascript">
function changecouleur(obj)
  {
//var ListeDesCouleurs = new Array ("yellow", "red", "lime", "black", "blue", "darkgreen");

  var nbcouleurs=ListeDesCouleurs.length;

  numerodecouleur= Math.floor(Math.random() * nbcouleurs-1)+1;
  
  el=document.getElementById(obj);                         
  el.style.backgroundColor=ListeDesCouleurs[numerodecouleur];
  }
</script>
</head>

 <!-- ----------  Déclaration du tableau dans javascript et copie des données -----  -->
<script type="text/javascript">
var ListeDesCouleurs = new Array(
new Array('black'),new Array('blue'),new Array('darkgreen'),new Array('lime'),new Array('red'),new Array('yellow'),new Array(""));
</script>
<!-- ---------------  Déclaration du tableau dans javascript et copie des données -----  -->

 
Couleur bleu

 
Couleur bleu

 
Couleur bleu

 
Couleur bleu

 
Couleur bleu

 
Couleur bleu

 

</html>

Merci encore
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
————————————————————————————————————————
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>

<script type="text/javascript">
function changecouleur(obj)
  {
        var ListeDesCouleurs = new Array ("yellow", "red", "lime", "black", "blue", "darkgreen");
        var nbcouleurs=ListeDesCouleurs.length;
        var numerodecouleur= Math.floor(Math.random() * nbcouleurs-1)+1;
        obj.style.backgroundColor=ListeDesCouleurs[numerodecouleur];
  }
</script>
</head>

 <!-- ----------  Déclaration du tableau dans javascript et copie des données -----  -->
<script type="text/javascript">
var ListeDesCouleurs = new Array(
new Array('black'),new Array('blue'),new Array('darkgreen'),new Array('lime'),new Array('red'),new Array('yellow'),new Array(""));
</script>
<!-- ---------------  Déclaration du tableau dans javascript et copie des données -----  -->

 
Couleur bleu

 
Couleur bleu

 
Couleur bleu

 
Couleur bleu

 
Couleur bleu

 
Couleur bleu

</html>

————————————————————————————————————————


il te reste à harmoniser la taille des div IE et FF.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]