Ne pas inclure plusieurs fois un même javascript [Résolu]

Signaler
Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
26 décembre 2008
-
Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
26 décembre 2008
-
Bonjour

J'ai un systeme (en PHP) ou j'importe plusieurs éléments differents (principalement d'autres pages php).
La plupart du temps ces pages php utilisent les meme fichiers fonctions javascript, je les ai donc regroupées dans un fichier commun.

Il existe des pages ou je n'utilise aucun éléments et donc je n'ai pas besoin d'apeler ce fichier (sa serait pas drôle sinon :p )
Je cherche donc un moyen de trouver si le fichier à déjà été inclus, ne pas le faire reapeler par un autre élément.

J'ai commencé en creant une variable globae qui teste si tel ou tel fichier à deja été inclus, mais à la longue ce n'est pas propre. En effet si dans chaque élément je dois tester cette variable avant de pouvoir inclure un fichier, ce n'est pas pratique.

J'ai aussi pensé à tester dans le fichier javascript par lui meme s'il avait deja été apelé avec des variables globales, mais sa ne m'inspire pas.

Quelqu'un à t-il deja eu ce genre de probleme, et trouvé une solution viable?

Merci d'avance
Ro

23 réponses

Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
26 décembre 2008

C'est Re moi.

On m'a dit que le passage de variables avec le mot clé 'global' n'existerait probablement plus d'ici le php6, donc je reste sur l'avant dernière solution (chaque élément déclare le managerElement dans GLOBALS s'il n'existe pa et lui passe ses includes, que ce soit *.css ou *.js au moins je suis tranquille, et c'est lui qui gerera les doublons, et rendra le code html pour l'inclusion finale)

Une petite amélioration est possible en faisant de l'élément manager une classe singleton, pour ne pas tester l'existance du manager au début de chaque élément et n'avoir qu'une seule instance de managerElement. Je vais d'abord mettre en place la première version avant de pouvoir optimiser de cette manière.

Merci pour vos réponses
Ro
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
Pourquoi ne pas créer un fichier php contenant tout les includes que tu inclut dans tout tes fichiers ???

Si t'a besoin d'aide, MP !!!
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
Au fait, j'avais oulié : "bonjour", désolé pour le double post !!!

Si t'a besoin d'aide, MP !!!
Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
26 décembre 2008

Salut :)
Merci de cette réponse, mais sa me parait pas logique mais peut etre n'ai-je pas compris ton point de vue.

Tous mes fichiers, que j apelle élément pour differencier, (ils contiennent des fonctions ou des classes) peuvent être inclus dans mon fichier Php ( une sorte de constructeur à l'aide des elements).

Si dans tous mes éléments, j'apelle tous les include, une fois dans le fichier Php je vais avoir pas mal de déclarations inutiles et qui vont probablement lever des exceptions.

Pour re expliquer peut etre mieux, un schema:

PAGE PHP      |      ELEMENTS      |      JS COMMUN (plusieurs fic differents)

Mes elements utilisent chacun des fichier de la réserve JS COMMUN ( pas forcement les meme, mais sa peut aussi bien l etre.)
J'ai une multitude d'elements differents, une sorte de bibliotheque pour creer des PAGE PHP (dans une page j apelle une/des fonction(s) php définie(s) dans les elements).

Mon probleme est que si j utilise des elements qui utilisent un meme JS COMMUN, alors j'aurais plusieurs fois le meme code.

Enfin il se peut que je n'utilise aucun element dans une PAGE PHP, donc je ne veux pas l'inclure par défaut.

Je sais pas si tu avais compris comme sa.

Ro
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
ok, je vois mieux, je viens de faire une grosse boulette, je croyais que tu voulais inclure tout tes fichiers sur toutes tes pages !!!

Tu peus peut être utiliser des sessions, je m'explique : si ton fichier est inclus alors tu créer une variable de session qui contient true sinon sois tu n'en créer pas sois tu en créer une qui contient false !!! Après sois tu test le contenue de tes session, sois tu test l'existance de la variable même !!!

J'èspère ne pas avoir fait d'autre boulette !!!

a++

Si t'a besoin d'aide, MP !!!
Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
26 décembre 2008

Re

L'idée est pas mal, mais sa pose un probleme dans mon cas.
dans JS COMMUN, j 'ai plusieurs fichiers.
(ils sont découpés par utilité, requete ajax, affichage personnalisés...)

A terme je pense que j aurais une dizaine de fichiers de ce genre.
Il me faudrait donc autant de variables. Pas Coules :(

Je réfléchis peut etre à un tableau associatif global (php) avec un booleen et une fonction qui servirait de manager pour inclure (ou non ) et mettre à jour le tableau.

A voir

Ro
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
oui, j'ai failli te proposer un tableau mais je n'était pas sur que les tableau pouvaient se conserver entre les pages comme des sessions !!!

Si t'a besoin d'aide, MP !!!
Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
26 décembre 2008

Je pense que oui, puisque  je viens de commencer à mettre en oeuvre une solution de ce genre.
Sa fonctionne, mais j'ai l impression qu'on peut faire mieux.

Je sais pas trop de quel maniere.
Je vais voir si je peut trouver quelque chose.

Merci
Ro
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
de rien, si tu trouve la solution met la en réponse accèpté !!!

Si t'a besoin d'aide, MP !!!
Messages postés
38
Date d'inscription
jeudi 8 novembre 2007
Statut
Membre
Dernière intervention
25 avril 2008

Bonjour.
Si j'ai bien compris ton problème tu peux utiliser include_once().
Il agit comme include() mais vérifie avnt que le fichier n'a pas déjà été inclut.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
mince, comment ai-je pu ne pas y penser plus tot !!!

Si t'a besoin d'aide, MP !!!
Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
26 décembre 2008

C'est bien sa que je veux faire mais avec des fichiers javascript
(cad avoir le code construit <script ...></> quelque fois, il y a aussi un css 'attaché' au javascript avec le meme nom)

Bon sinon il faudrait un moyen de detourner par du php, dans l immediat je ne vois pas de solution.

Ro
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Rorix, ce n'est pas en écoutant les conseils de Nicomilville que tu t'en sortiras avec quelque chose de propre, fais-moi confiance, il s'y connaît moins que toi en prog.

Le include_once vaut pour les fichiers php. Si j'ai bien compris l'idée de Cephalic, cela voudrait dire créer un fichier .php par fonction JS, ça ne ma parait pas optimal.

C'est plutôt tes différents éléments php qui ne devrait pas s'occuper de déclarer la fonction javascript, mais simplement faire un appel. Et au moment de construire, si un ou plusieurs appels ont été lancés sur une fonction javascript, tu l'inclus. Je ne sais pas si je suis clair ?

à+
Messages postés
38
Date d'inscription
jeudi 8 novembre 2007
Statut
Membre
Dernière intervention
25 avril 2008

Désolé pour le double post mais ce n'est pas des fichiers php que tu veux include alors ma réponse n'est pas bonne.
Desolé
Messages postés
38
Date d'inscription
jeudi 8 novembre 2007
Statut
Membre
Dernière intervention
25 avril 2008

Mais le mieux serait je pense de restructurer ton application pour ne pas avoir ce problème.
tu dois pouvoir contourner ce problème autrement.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
Re,

@Rorix83 = c'est vrai que je me trompe souvent mais j'ai aussi aidé beaucoup de personne !!!

@Evangun = ce n'est pas en jugeant les gens que l'onaide les autre maintenant si ça t'amuse de me dévaloriser devant tout le monde, continue, je n'en ai rien a faire !!!

Si t'a besoin d'aide, MP !!!
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Nicomilville, ce n'est pas pour te dévaloriser en soi, c'est pour que les gens sachent que tu leurs donneras de mauvaises solutions et donc pour qu'ils en cherchent d'autres.
Dans l'idéal oui à mon avis tu devrais arrêter de poster sur ce forum et revenir dans quelques années quand tu auras progressé, mais on en a déjà parlé, je ne reviendrai pas dessus. Si tu ne veux pas comprendre tant pis.
Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
26 décembre 2008

> Evangun

Oui, je vois ce que tu veux dire, j y avais pensé, mais je l'avais mis de coté ne voyant pas comment l'implementer.
Concretement c'est sa que je veux faire. Arriver a faire remonter le nom des fichiers a inclure a la page PHP et la laisser faire sa comme il faut.

Si je résume
- il faut creer le tableau de variables (le booleen et les path js/css)
- avoir acces au tableau dans tous les elements pour mettre a jour le booleen et les chemins par la suite.


une fois dans la page php.
- On declare notre tableau
- On inclut tous les elements, qui vont mettre à jour le tableau
- enfin une fonction qui parcourt le tableau et m inclut proprement mes fichiers
(c est une grosse architecture c est pour sa que je tiens au proprement :))

Pour recuperer les chemins, au moment de mettre à jour le booleen, je remplit aussi un sous tableau
['element']['isInclude']
['element']['css_path']
['element']['js_path']

Voila comment j imagine sa, maintenant : Peut on faire plus ordonné?

Merci d'avance

Rorix
Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
26 décembre 2008

Pour Nico : Je pense bien que nous avons pas le meme niveau de programmation, mais toutes les idées m'interessent, il faut juste trouver la maniere de les implementer, la est la difficulté à mon avis.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
@Evangun = je poste déjà beaucoup moins depuis ton message sur phpcs, je post un peu plus sur javascriptfr.com, mais arrèter de poster totalement c'est hors de question, ce n'est pas parce que je suis jeune que je suis un iniorant alors ...

Si t'a besoin d'aide, MP !!!