Php à javascript
Fermé
KaTa_TaKa
Messages postés
56
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
11 décembre 2009
-
15 janv. 2009 à 11:23
KaTa_TaKa Messages postés 56 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 11 décembre 2009 - 15 janv. 2009 à 23:18
KaTa_TaKa Messages postés 56 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 11 décembre 2009 - 15 janv. 2009 à 23:18
A voir également:
- Php à javascript
- Telecharger javascript - Télécharger - Langages
- Easy php - Télécharger - Divers Web & Internet
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Bouton php - Forum PHP
- Php?id=1 - Forum PHP
7 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
15 janv. 2009 à 17:55
15 janv. 2009 à 17:55
Bonsoir,
un chetit exemple vaux mieux qu'un long discours:
@lain
un chetit exemple vaux mieux qu'un long discours:
<html> <head> <script language="Javascript" type="text/javascript"> var tableau_JS = new Array(); <?php // passage array de php vers Javascript $tableau = array("cle1"=>"value1","cle2"=>"value2", "cle3"=>"value3","cle4"=>"value4"); foreach($tableau as $cle=>$valeur) { echo 'tableau_JS["'.$cle.'"]="'.$valeur.'";'; } ?> //verif: for(var cle in tableau_JS){ alert(cle+" ==> "+tableau_JS[cle]); } </script> </head> Essai de passage d'array de php a Javascript </html>
@lain
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
15 janv. 2009 à 11:50
15 janv. 2009 à 11:50
Bonjour,
J'ai déjà été confronté à cette problématique. Ce que j'ai fait, c'est exécuter un shell_exec par mon script php (faire un ls en unix afin de récupérer la liste des fichiers).
Par contre, certains serveurs empêchent tes scripts php d'exécuter des commandes unix sur les serveurs (pour des raisons de sécurité), donc il faut voir si ton serveur l'accepte ou non.
Ensuite, tu récupères la réponse de ton ls, et tu fais un echo pour passer la chaîne à tes fonctions javascript.
Pas la peine de passer par un fichier intermédiaire, car ton php étant interprété côté serveur, tu peux passer directement la liste des fichiers en paramètres, ça ne coûte rien.
Si tu passes par un fichier, ton php devra d'abord être interprété côté serveur, puis le javascript côté client, puis le javascript va créer une requête pour accéder au fichier côté serveur, fichier qui va être retourné côté client, puis parsé côté client, avant d'être utilisé.
On voit bien que c'est beaucoup plus coûteux (ne serait-ce que dans les différents échanges de request/response qui demandent à chaque fois plusieurs secondes).
Cordialement,
J'ai déjà été confronté à cette problématique. Ce que j'ai fait, c'est exécuter un shell_exec par mon script php (faire un ls en unix afin de récupérer la liste des fichiers).
Par contre, certains serveurs empêchent tes scripts php d'exécuter des commandes unix sur les serveurs (pour des raisons de sécurité), donc il faut voir si ton serveur l'accepte ou non.
Ensuite, tu récupères la réponse de ton ls, et tu fais un echo pour passer la chaîne à tes fonctions javascript.
Pas la peine de passer par un fichier intermédiaire, car ton php étant interprété côté serveur, tu peux passer directement la liste des fichiers en paramètres, ça ne coûte rien.
Si tu passes par un fichier, ton php devra d'abord être interprété côté serveur, puis le javascript côté client, puis le javascript va créer une requête pour accéder au fichier côté serveur, fichier qui va être retourné côté client, puis parsé côté client, avant d'être utilisé.
On voit bien que c'est beaucoup plus coûteux (ne serait-ce que dans les différents échanges de request/response qui demandent à chaque fois plusieurs secondes).
Cordialement,
KaTa_TaKa
Messages postés
56
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
11 décembre 2009
2
15 janv. 2009 à 14:31
15 janv. 2009 à 14:31
salut,
je ne comprends pas bien ta solution avec le shell_exec, si tu peux me donner plus de precision je serais reconnaissant, sachant que j'ai jamais fait un programme en shell. Je compte hebergé mon site chez free donc je sais pas s'il accepte des commandes unix genre ls ...
je ne comprends pas bien ta solution avec le shell_exec, si tu peux me donner plus de precision je serais reconnaissant, sachant que j'ai jamais fait un programme en shell. Je compte hebergé mon site chez free donc je sais pas s'il accepte des commandes unix genre ls ...
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
15 janv. 2009 à 14:55
15 janv. 2009 à 14:55
Voici le code php que j'avais utilisé :
Par exemple, si je voulais récupérer tous les fichiers image se trouvant dans le répertoire Photos/soireeNoel, j'appelais cette fonction avec "soireeNoel" en paramètre.
Le shell_exec permet ici de se déplacer dans le bon répertoire, et le ls de lister uniquement les fichiers ayant la bonne extension.
Ensuite, strtr permet de créer une chaîne (je sépare tous les fichiers listés par une virgule), sinon ça retourne un tableau php, et c'est plus galère pour passer ça en argument au javascript.
Le meilleur moyen de voir si ça marche est de tester :)
Certains serveur bloquent carrément l'accès aux commandes php permettant d'intéragir avec le serveur, d'autres (et la plupart je pense), t'autorisent la plupart des commandes unix (comme ici le cd et le ls), mais te bloquent celles présentant un risque de sécurité.
Cordialement,
function getPhotos($path) { $rep = 'Photos/'; //Filters to select picture files only $filters = '*.jpg *.gif *.bmp *.png *.tiff *jpeg *.JPG *.GIF *.BMP *.PNG *.TIFF *.JPEG'; $photos = shell_exec('cd "'.$rep.$path.'" && ls -t '.$filters); //return a string and not an array because it will be used by js return strtr($photos, "\n", ","); }
Par exemple, si je voulais récupérer tous les fichiers image se trouvant dans le répertoire Photos/soireeNoel, j'appelais cette fonction avec "soireeNoel" en paramètre.
Le shell_exec permet ici de se déplacer dans le bon répertoire, et le ls de lister uniquement les fichiers ayant la bonne extension.
Ensuite, strtr permet de créer une chaîne (je sépare tous les fichiers listés par une virgule), sinon ça retourne un tableau php, et c'est plus galère pour passer ça en argument au javascript.
Le meilleur moyen de voir si ça marche est de tester :)
Certains serveur bloquent carrément l'accès aux commandes php permettant d'intéragir avec le serveur, d'autres (et la plupart je pense), t'autorisent la plupart des commandes unix (comme ici le cd et le ls), mais te bloquent celles présentant un risque de sécurité.
Cordialement,
KaTa_TaKa
Messages postés
56
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
11 décembre 2009
2
15 janv. 2009 à 15:05
15 janv. 2009 à 15:05
salut,
et comment est ce qu'on peut recuperer le resultat de cette fonction ( getPhotos() ) dans une page javascript ( fichier.js ). normalement (d'apres google) on peut pas recuperer cela, il faut creer un script php qui cree nos fonctions javascript et et qui leur passe les parametres ... en fait c'est pour cela moi je pense passer par des fichier pour separer mes programmes php de ceux de js. parce que je trouve que c'est pas tres propre ... voila voila mais ça reste mon point de vu ...
Qu'est ce t'en pense ?
et comment est ce qu'on peut recuperer le resultat de cette fonction ( getPhotos() ) dans une page javascript ( fichier.js ). normalement (d'apres google) on peut pas recuperer cela, il faut creer un script php qui cree nos fonctions javascript et et qui leur passe les parametres ... en fait c'est pour cela moi je pense passer par des fichier pour separer mes programmes php de ceux de js. parce que je trouve que c'est pas tres propre ... voila voila mais ça reste mon point de vu ...
Qu'est ce t'en pense ?
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
15 janv. 2009 à 15:37
15 janv. 2009 à 15:37
Bon, je vais essayer d'être clair...
Php est un langage interprété côté serveur. Son rôle, c'est de créer des pages web dynamique (en général, parce qu'on peut aussi s'en servir pour faire des scripts et tout, mais c'est pas trop le but). En gros, dans 90% de cas, le php, ça sert juste à :
- effectuer une requête dans une base de données
- mettre les données ainsi récupérées à disposition du html pour les afficher
Tu as raison de vouloir séparer tes différentes couches, c'est ce qu'il faut faire. L'un des principes qu'il faut essayer de respecter quand tu crées une application (pour que ce soit facile à comprendre et à maintenir), c'est le pattern MVC (modèle, vue, contrôleur). Ce principe vise à définir 3 couches qui ont un rôle bien précis, et à bien séparer ces trois couches pour rendre ton application modulaire :
- les modèles, c'est tes règles fonctionnelles, tes extractions de données, tes calculs mathématiques sur les données...
- la vue, c'est la partie purement affichage. Dans une application web, ce sera tes pages html, ton css, ton javascript (en gros, s'il faut afficher le tableau en rouge ou en vert, dans quelle résolution...)
- enfin, le contrôleur, qui vise à faire le lien entre les deux couches précédentes. En php, c'est les scripts qui vont récupérer des formulaires, appeler des méthodes du modèle, récupérer les résultats et les passer à la vue afin de les afficher.
Si je te présente ça, c'est pour en arriver à un point important (en fait c'est une question qui concerne la différente conceptuelle entre les servlets et les jsp en java, mais ça s'applique totalement dans notre cas). Tu as 2 manières d'écrire ton application en php.
La première, c'est d'écrire ton html au sein du code php de la manière suivante (méthode 1):
La seconde, c'est d'insérer le php au sein de ta page html (méthode 2) :
Quelle est la meilleure façon : la seconde. Pourquoi? Parce que tu ne mélanges pas la présentation de ton métier : si tu as besoin d'afficher différemment les choses, tu vas modifier ton fichier html (bon, l'extension c'est .php, mais ton fichier n'en contient pratiquement pas), et si tu veux modifier la valeur de tes variables, tu le fais dans ton fichier php.
Maintenant, ce qui est intéressant (et on revient à notre problème), c'est qu'en fait, c'est le php qui génère la page à afficher. Donc en gros, quand ton navigateur web reçoit une page du serveur, toutes les balises <?php ?> n'existent plus, le serveur a créé une page html avant de te l'envoyer, donc toutes les valeurs sont écrites en dur.
Pour le javascript, c'est la même chose. Ce qu'il faut que tu fasses ici, c'est écrire une fonction javascript standard, dans un fichier .js, et qui prend en entrée une chaine de caractères du style "fichier1.ext, fichier2.ext, fichier3.ext", et que tu fasses ton traitement en javascript.
Dans ton php, tu n'auras que le passage de paramètre à ta fonction à écrire :
J'espère n'avoir pas trop dévié et avoir été un peu clair.
Cordialement,
Php est un langage interprété côté serveur. Son rôle, c'est de créer des pages web dynamique (en général, parce qu'on peut aussi s'en servir pour faire des scripts et tout, mais c'est pas trop le but). En gros, dans 90% de cas, le php, ça sert juste à :
- effectuer une requête dans une base de données
- mettre les données ainsi récupérées à disposition du html pour les afficher
Tu as raison de vouloir séparer tes différentes couches, c'est ce qu'il faut faire. L'un des principes qu'il faut essayer de respecter quand tu crées une application (pour que ce soit facile à comprendre et à maintenir), c'est le pattern MVC (modèle, vue, contrôleur). Ce principe vise à définir 3 couches qui ont un rôle bien précis, et à bien séparer ces trois couches pour rendre ton application modulaire :
- les modèles, c'est tes règles fonctionnelles, tes extractions de données, tes calculs mathématiques sur les données...
- la vue, c'est la partie purement affichage. Dans une application web, ce sera tes pages html, ton css, ton javascript (en gros, s'il faut afficher le tableau en rouge ou en vert, dans quelle résolution...)
- enfin, le contrôleur, qui vise à faire le lien entre les deux couches précédentes. En php, c'est les scripts qui vont récupérer des formulaires, appeler des méthodes du modèle, récupérer les résultats et les passer à la vue afin de les afficher.
Si je te présente ça, c'est pour en arriver à un point important (en fait c'est une question qui concerne la différente conceptuelle entre les servlets et les jsp en java, mais ça s'applique totalement dans notre cas). Tu as 2 manières d'écrire ton application en php.
La première, c'est d'écrire ton html au sein du code php de la manière suivante (méthode 1):
<?php //code permettant de faire des requêtes en BD... ... $i = 5; //affichage echo '<html><head><title>Ma page</title></head>'; echo '<body>Mon entier i = ' .$i. '</body>'; echo '</html>'; ?>
La seconde, c'est d'insérer le php au sein de ta page html (méthode 2) :
<html> <head> <title>Ma page</title> </head> <body> <?php $i = $_GET['i']; ?> Mon entier i = <?php echo $i ?> </body> </html>
Quelle est la meilleure façon : la seconde. Pourquoi? Parce que tu ne mélanges pas la présentation de ton métier : si tu as besoin d'afficher différemment les choses, tu vas modifier ton fichier html (bon, l'extension c'est .php, mais ton fichier n'en contient pratiquement pas), et si tu veux modifier la valeur de tes variables, tu le fais dans ton fichier php.
Maintenant, ce qui est intéressant (et on revient à notre problème), c'est qu'en fait, c'est le php qui génère la page à afficher. Donc en gros, quand ton navigateur web reçoit une page du serveur, toutes les balises <?php ?> n'existent plus, le serveur a créé une page html avant de te l'envoyer, donc toutes les valeurs sont écrites en dur.
Pour le javascript, c'est la même chose. Ce qu'il faut que tu fasses ici, c'est écrire une fonction javascript standard, dans un fichier .js, et qui prend en entrée une chaine de caractères du style "fichier1.ext, fichier2.ext, fichier3.ext", et que tu fasses ton traitement en javascript.
Dans ton php, tu n'auras que le passage de paramètre à ta fonction à écrire :
... <div onclick="mafonctionJS(<?php echo getPhotos("soireeNoel")?>);">Clique ici mon gars ! </div> ...
J'espère n'avoir pas trop dévié et avoir été un peu clair.
Cordialement,
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
15 janv. 2009 à 15:39
15 janv. 2009 à 15:39
Post qui ne sert à rien, suite à un petit bug... Désolé
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
KaTa_TaKa
Messages postés
56
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
11 décembre 2009
2
15 janv. 2009 à 17:08
15 janv. 2009 à 17:08
prq tu dis que ça ne sert à rien ? je trouve que ça colle avec le sujet lol ...
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
15 janv. 2009 à 17:13
15 janv. 2009 à 17:13
En fait j'avais posté le long message, mais il n'apparaissait pas.
Alors je l'ai reposté, et là les deux sont apparus d'un coup. Donc plutôt que d'afficher deux fois un message immense, je l'ai édité pour qu'il ne tienne que sur une seule ligne.
Les explications t'ont convaincu alors ou tu veux toujours utiliser ton fichier intermédiaire ?
Alors je l'ai reposté, et là les deux sont apparus d'un coup. Donc plutôt que d'afficher deux fois un message immense, je l'ai édité pour qu'il ne tienne que sur une seule ligne.
Les explications t'ont convaincu alors ou tu veux toujours utiliser ton fichier intermédiaire ?
KaTa_TaKa
Messages postés
56
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
11 décembre 2009
2
15 janv. 2009 à 17:24
15 janv. 2009 à 17:24
salut,
oui convaincu merci bcp pour ton aide
mais une derniere question ... moi je veux passer en parametre à ma fonction JS une array, donc ma question est la suivante : est ce qu'on peut passer en parametre d'une fonction JS une array de php ?
j'espere que j'etais clair ...
merci encore une fois marco la baraque
oui convaincu merci bcp pour ton aide
mais une derniere question ... moi je veux passer en parametre à ma fonction JS une array, donc ma question est la suivante : est ce qu'on peut passer en parametre d'une fonction JS une array de php ?
j'espere que j'etais clair ...
merci encore une fois marco la baraque
KaTa_TaKa
Messages postés
56
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
11 décembre 2009
2
15 janv. 2009 à 23:18
15 janv. 2009 à 23:18
merci bcp pour ton aide, ça m'a sauvé la vie ...