Passage de variable de php à javascript et/ou inversement ?

Signaler
Messages postés
10
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2006
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bonjour à tous


J'ai un fichier ejs_menu.js


est-ce que la syntaxe suivante est possible :
color = <?php echo $background2; ?>;

auquel cas, si dans mon fichie index.php j'ai déjà un


<?php
include('design.php');
?>


avec mon <script language="JavaScript" src="ejs_menu.js" type="text/JavaScript"></script>


faut-il aussi faire une inclusion de design.php dans le fichier ejs_menu.js


du type require("common.php");


sachant que c'est le fichier design.php qui définit $background2


Merci à vous.


Je débute en PHP et me prends un peu la tête avec ça

14 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,



oui, tu peux assigner une variable php a une variable javascript de
cette maniere en effet (pas l'inverse). Le reste j'ai pas tout compris
lol, mais disons qu'il faut que ta variable php soit definies,
oui, dans la page sur laquelle se trouve ton javascript, evidemment.
Messages postés
10
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2006

La variable n'est pas définie directement DANS la page sur laquelle se trouve mon javascrip mais dans le fichier design.php (utilisation du tuto de PHP débutant pour un site multicouleurs)

<?php

// On récupère la variable de contenues dans le cookie
if(isset($_COOKIE['DESIGN'])) $DESIGN=$_COOKIE['DESIGN'];
else $DESIGN="";


if($DESIGN=='bleu') // DESIGN BLEU
{
$bordure = '#000000';
$color_titre_menu = '#B1D6E7';
$background = '#0033CC';
$background2 = '#0099FF';
}
elseif($DESIGN=='rouge') // DESIGN ROUGE
{
$bordure = '#F79393';
$color_titre_menu = '#F0AF10';
$background = '#CC3300';
$background2 = '#F42E17';
}
elseif($DESIGN=='vert') // DESIGN VERT
{
$bordure = '#F79393';
$color_titre_menu = '#F0AF10';
$background = '#339933';
$background2 = '#66CC33';
}
else
{
// les couleurs par défaut (le visiteur n'a pas encore choisi)
$bordure = '#000000';
$color_titre_menu = '#B1D6E7';
$background = '#CCCC33';
$background2 = '#E1E716';
}


?>

le fichier ejs_menu.js (menu fixe)

gauche5=190
haut5=300
target5 = '_self';


color51 = <?php echo $background2; ?>;
color52 = <?php echo $background; ?>;
color53 = <?php echo $background2; ?>;



menu5titre = new Array;
menu5lien = new Array;


menu5titre[0]= 'lien 1'
menu5lien[0]= '1.htm'
menu5titre[1]= 'lien2'
menu5lien[1]= '2.htm'
menu5titre[2]= 'lien3'
menu5lien[2]= '3.htm'
document.write('<STYLE TYPE="text/css">#menu5 { position:absolute;top:'+haut5+'; }</STYLE>');


ie4=document.all
ns6=document.getElementById&&!document.all
ns4=document.layers


function placeMenu5() {
if (ie4) {menu5.style.pixelTop=document.body.scrollTop+haut5}
else if (ns6) {document.getElementById("menu5").style.top=window.pageYOffset+haut5}
else if (ns4) {eval(document.menu5.top=eval(window.pageYOffset+haut5));}
if(ie4 || ns6 || ns4)
setTimeout("placeMenu5()",1);
}


window.onload = placeMenu5;
document.write('border=1 cellspacing=0 cellpadding=3 bordercolorlight=#000000 bordercolordark=#C0C0C0 WIDTH=180>----
Menu, ')
for(a=0;a<menu5lien.length;a++)
{
document.write('----
'+menu5titre[a]+', ');
}
document.write('
')

et dans mon fichier d'index.php, bien entendu, j'ai inclu mon fichier design.php et mon fichier ejs_menu.js, comme mentionné

<?php
include('design.php'); // On inclut le fichier design.php
?>

<script language="JavaScript" src="ejs_menu.js" type="text/JavaScript"></script> //

Ben ça ne marche pas !

Mais bon, je vais pas te prendre la tête...

à l'occasion, si t'as une idée, ce serait cool...
sinon, merci et bonne journée :)
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Quelle est l'erreur...?
Messages postés
10
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2006

euh, ben...

mon menu ne s'affiche pas ?!

(alors que je l'ai testé sans variable php, il marche très bien ce menu !)

sinon, partout là où j'ai utilisé la même variable, comme pour le bgcolor des cellules de certains tableux de la page de teste index.php, ça marche

genre : <td height="80" align="right" valign="top" bgcolor="<?php echo $background; ?>";

ça répond ou pas à ta question

je crois que non, hein ?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Essaye de tout mettre dans un seul fichier pour voir.

Au passage, j'ai regarde vaguement ton javascript...tu es sur d'avoir
besoin de javascript pour ca ...? Une bonne css sera plus efficace a
mon avis. Et plus digeste ;-)
Messages postés
10
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2006

oui, mais qu'importe, ce java ou un autre, c'était pour soulever la question de savoir comment jongler avec les deux... php / javascript

je peux bien entendu, utiliser un menu java ultra simple, et recommencer le teste

je peux aussi, comme tu le suggères essayer d'inclure le java directement dans ma page de teste index.php

entre nous, si tu connais un exemple de menu fixe en css, je suis partante :)

mais j'en avais testé plusieurs sur d'autres exemples, très alléchants en apparence, qui me posaient des problèmes à l'affichage, mais ça, c'est un autre sujet.

alors je vais essayer d'inclure le java dans le corps de ma page de teste

la suite au prochain numéro. je te tiens informé

puis ça commence à bien faire, j'ai une méchante envie d'aller me baigner :)

encore merci
Messages postés
10
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2006

bon, alors ça marche parfaitement, même avec un javascript aussi "indigeste", comme tu le dis, c'est vrai...
à deux conditions, visiblement
1 - il fallait corriger les lignes suivantes du javascript

color51 = <?php echo $background2; ?>;
color52 = <?php echo $background; ?>;
color53 = <?php echo $background2; ?>;

comme suit :

color51 = '<?php echo $background2; ?>';
color52 = '<?php echo $background; ?>';
color53 = '<?php echo $background2; ?>';

Maintenant, je sais !!!

2 - effectivement, inclure le script directement dans le corps de la page de teste index.php
ce qui amène à penser que tel que développé dans l'exemple, le script ne peut pas trouver la définition de la variable, même si le fichier design.php a pourtant été introduit dans la page de teste.php

La question à savoir alors, c'est est-ce qu'on peut avoir un include php + un download d'un js externe dans un même fichier ?

La réponse est sûrement oui, auquel cas il manquerait quelque chose DANS mon fichier ejs-menu.js pour qu'il trouve de lui même la variable telle que définit dans design.php

Enfin, on s'en tiendra à ça pour le moment.

Excusez si je m'exprime mal, mais j'ai encore bien du mal à m'exprimer dans cette langue.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Oui c'est logique pour les quotes, je l'avais ratee celle-la ;-)



Le mieux est sans doute d'appeler ton fichier js en .php...d'ajouter
une ligne avant ton menu pour faire l'include de ton fichier design.php.

Et dans les pages ou tu dois appeler ton menu, ben tu fais un include de ton fichier menu.php.
Messages postés
10
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2006

Euh, ben, c'est à dire que... force est d'avouer que je suis pas certaine d'avoir compris ce que tu signifies en fait par : "appeler ton fichier js. en PHP"

ça pourrait être aussi simple que ça ?

tout en utilisant le code javascript ?

dans ce cas, concrètement, je dois procéder comment :

je veux dire, à quoi va ressembler le code de mon fichier menu.php ?

autrement dit, comment tu le places entre les balises <?php>..... <?> ?

c'est con, hein, mais là je suis forcée de soulever la question
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
menu.php :



<?php



require_once ('designer.php');



?>



//<![CDATA[

ton code js...

//]]>



ou



<SCRIPT language="javascript" type="text/javascript">

<!--

ton code js...

//-->

</SCRIPT>

tout simplement :-)
Messages postés
10
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2006

oui, et partant de là, si après je fais un include de menu.php dans ma page de teste index.php, c'est censé marché ?

ben le mieux c'est de faire un teste, dans la mesure où même si j'ai pallié au problème, procéder comme tu l'indiques sera plus pratique si je dois inclure mon menu dans différentes pages.

merci en tout cas, je m'en retourne du côté de chez moi :)
Messages postés
10
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2006

Bingo !

Donc au final et pour conclure :

pas cumuler js externe et include de fichier php dans la même page index.php

> soit je recopie mon javascript dans le corps de ma page index.php
> soit j'appelle mon fichier js en php puis je fais un include de mon menu.php dans ma page index.php

Ok ?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Je t'en prie,



a un de ces 4 pour la suite de nos aventures ;-)
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Ben disons que ce sont deux solutions oui (et que je n'ai pas trouve
mieux la lol). Je conseille les include() quand meme, evidemment...du
moins, si tu dois avoir ce menu sur plusieurs pages. De toutes facons,
la modularite, c'est toujours plus agreable :-)