Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/10/2011, 12h20   #1
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Par défaut Portée des variables PHP dans Javascript

Bonjour,
Je travaille un peu sur un projet commencé par d'autres et je suis à peu près noob en Javascript. Désolé si mes questions sont basiques mais après recherche sur le forum et parcours de quelques messages, rien ne m'a guidé.

Grosso modo, je reprends du code qui mélange du PHP, du CSS, du HTML et du Javascript, tout en faisant quand même appel à des fichiers CSS et JS.

J'ai voulu réorganiser un peu tout ça en isolant tout le CSS et tout le Javascript dans des fichiers .css et .js.

Le problème est que certaines portions de code Javascript utilisent des variables PHP.

Après moult essais et pas mal de recherches sur le net, il semble impossible d'externaliser dans un fichier Javascript les fonctions Javascript utilisant du code PHP afin que le code Javascript n'apparaisse pas dans le code source de la page HTML (je trouve ça moche !).

Vrai ou faux ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 12h29   #2
Membre éclairé
 
Inscription : janvier 2004
Messages : 423
Détails du profil
Informations personnelles :
Âge : 39
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2004
Messages : 423
Points : 308
Points : 308
si c'est un fichier .js, par défaut, ton serveur web ne le passera pas à php et le servira, tel quel, non interprété..

Tu peux configurer ton serveur web pour exécuter php aussi sur les .js, mais ça risque d’être un peu lourd..

Par contre tu peux tester en appelant ton fichier
"scripts.js.php" et l’appeler dans ton html comme un fichier js externe normal
Code :
<script type="text/javascript" src="/js/scripts.js.php"></script>
ca devrait marcher.. Peut-être auras tu besoin de rajouter un header approprié pour que le script php soit bien reconnu comme js :
Code :
header("content-type: application/x-javascript");
Encore que normalement, vu que tu précise le type dans ton appel, ca ne devrait pas être nécessaire..

A tester !
zevince est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 19h25   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
J'ai essayé ce genre de manip mais rien n'y fait.
Je vais simplement séparer le code dans des fichiers ;js mais les appeler par require dans le PHP pour qu'ils soient intégrés à la page générée par PHP et qu'ils bénéficient des variables PHP comme actuellement.
Ce sera déjà mieux que d'avoir tout mélangé dans le même fichier.

Merci de ta réponse.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 20h12   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 055
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 055
Points : 45 173
Points : 45 173
Citation:
J'ai essayé ce genre de manip mais rien n'y fait.
Pourtant ça fonctionne parfaitement ...

soit mettre le fichier css ou js avec une extension .php
- et mettre le src des balises avec l'extension .php
- ou faire un rewrite rule poru que les .css pointent sur des .php



soit indiquer au serveur d'interpréter les fichiers .css et .js avec php

Ce sont des techinques éprouvées ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 21h51   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Ça a fonctionné pour le CSS mais pas pour le Javascript alors je change de stratégie pour le JS
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 15h33   #6
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
Citation:
Envoyé par CinePhil Voir le message
Ça a fonctionné pour le CSS mais pas pour le Javascript alors je change de stratégie pour le JS
Qu'entends-tu par ça ne fonctionne pas en js ? Tu n'as pas les variables php ou tu n'as pas de fichier du tout ?

Perso en header je met juste ça :
Code php :
1
2
3
4
5
<?php
header("Content-type: text/javascript");
?>
 
//mon code javascript ici

Et dans ma page html, rien de plus qu'avant sauf que ma balise script a pour source la page php.

Code html :
<script type="text/javascript" src="http://www.monsite.com/monscript.php" ></script>


edit: sinon je me souviens qu'à l'époque ou j'utilisais des hebergeurs gratuits, l'un d'eux plantait mes fichiers externes ".php" car il rajoutait des balises html pour faire des stats.
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 15h36   #7
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 055
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 055
Points : 45 173
Points : 45 173
css javascript les deux fonctionnent
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 16h08   #8
Invité régulier
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 5
Points : 5
Une solution pour faire tourner du php dans le js, à noter dans le htaccess.

Citation:
Run PHP inside JavaScript files
When coding in JavaScript, it can very useful to be able to use PHP inside the .js files, for example for retrieving data from your database. Here is a snippet to allow the use of PHP inside .js files.

AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>
Source: http://www.kavoir.com/2010/07/how-to...ipt-files.html
snypi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 09h43   #9
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Merci pour le lien snypi.
Si je comprends bien ceci :
Citation:
Another solution for this is to make your server parse all files ending in .js. Just create a .htaccess if it doesn’t exist in the directory in which you wish to include and run PHP code inside all .js files.
Il faut mettre le .htaccess avec le code donné dans le répertoire contenant les .js ?

EDIT :
Je viens de faire un test, avec tous les fichiers dans le même répertoire pour simplifier :

.htaccess :
Code :
1
2
3
4
5
6
7
8
AddType application/x-httpd-php .css
 
AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js
 
<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>
styles.css :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
header( 'Content-type: text/css');
session_start();
?>
body {
	background: <?php echo $_SESSION['bg']['body']; ?>;
	font-style: normal;
}
#container {
	background: <?php echo $_SESSION['bg']['container']; ?>;
	color: <?php echo $_SESSION['txt']['police']; ?>;
	border: 10px solid <?php echo $_SESSION['txt']['border']; ?>;
}
 
#texte
{
	font-style: <?php echo $style_texte; ?>;
}
test.js :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
header("Content-type: application/x-javascript");
session_start();
?>
 
function afficherVariable()
{
	var varsess = '<? echo $_SESSION["variable_session"]; ?>';
	var variable = '<php echo $une_variable; ?>';
 
	alert(varsess + ' : ' + variable);
}
index.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
session_start();
$_SESSION['bg']['body'] = 'blue';
$_SESSION['bg']['container'] = 'yellow';
$_SESSION['txt']['police'] = 'red';
$_SESSION['txt']['border'] = 'green';
$_SESSION["variable_session"] = 'ma variable session';
$style_text = 'italic';
$une_variable = 'une valeur';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<title>Test</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<link rel="stylesheet" href="styles.css" type="text/css" media="screen" />
	<script type="application/x-javascript" src="test.js" charset="utf-8"></script>
</head>
<body>
	<div id="container"><span id="texte">Bonjour</span><br />
		<a href=javascript:afficherVariable()>Afficher les variables</a>
	</div>
</body>
</html>
Voici le résultat :


=> La variable session est récupérée mais pas la variable ordinaire, pour le CSS comme pour le Javascript.
Images attachées
Type de fichier : jpeg capture_ecran_test_css_js_dynamique.jpeg (33,0 Ko, 25 affichages)
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 13h04   #10
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
bon et ma(notre) solution alors ? (juste en renomant tes fichiers .js en .php).


le fichier ne fonctionne plus du tout ? ou uniquement tes variables qui ne fonctionnent pas ? as-tu un message d'erreur dans la console ?

as-tu bien mis le header php content-type "text/javascript" ?
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 22h24   #11
Invité régulier
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 5
Points : 5
mille excuse au lieu de mettre "une solution" j'aurais du écrire " une piste"

quand je regarde la configuration de ta réorganisation effectivement j'opterai pour un fichier js.php pour regrouper les code js.
et si pas trop de variable css à modifier je les mettrais dans une balise style du index.php
snypi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 09h52   #12
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Bon ben dans ce cas je reste sur la solution que j'ai adoptée :
Séparation du code Javascript dans des fichiers .js et require du fichier .js dans le programme PHP.

On va dire que c'est résolu, même si ça ne me satisfait qu'à moitié.

Merci à tous.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h17.


 
 
 
 
Partenaires

Hébergement Web