Problème avec des variables passées de PHP vers javascript.

Résolu
caf911 Messages postés 3 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 28 juillet 2008 - 25 juil. 2008 à 11:07
caf911 Messages postés 3 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 28 juillet 2008 - 28 juil. 2008 à 08:48
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

caf911 Messages postés 3 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 28 juillet 2008
28 juil. 2008 à 08:48
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.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 juil. 2008 à 11:13
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]
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 juil. 2008 à 11:31
Salut,

Bultez ++

Si la réponse vous convient, pensez : Réponse acceptée !
0
caf911 Messages postés 3 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 28 juillet 2008
26 juil. 2008 à 22:23
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 juil. 2008 à 08:27
————————————————————————————————————————
<!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]
0
Rejoignez-nous