Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, questions/réponses pour les FAQ, sources et autres ressources pour la rubrique Web ainsi que ses sous-rubriques.
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 04/05/2011, 10h07   #1
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
Par défaut De PHP à JavaScript : une méthode

Bonjour

Une méthode "universelle" pour passer des variables de php (Java asp ou autre) vers JavaScript

en lisant les posts j'ai vu que cette problématique revenait souvent.
comment passer des variables php à des scripts dans une page html ?

Voici donc une solution.
dans le code PHP créer un tableau associatif contenant toutes les variables à passer. si certaine variable sont des objets seule les valeurs des membres sont intéressant pour JavaScript utiliser donc get_object_vars pour obtenir un tableau de ces valeurs.
Code php :
1
2
3
4
5
$scriptData = Array(
  'resultCode' => 200,
  'message' => "Jusqu'ici tout va bien !",
  'user' => get_object_vars($mySqlQueryResult)
);
placez tous ce que vous voulez avec les niveau d'imbrications de votre choix.
à la génération HTML de votre page (entre les balises <head> de préférence) ajoutez
Code html :
1
2
3
<script type="text/javascript">
  scriptData = <?php echo json_encode($scriptData ); ?>;
</script>
vos variables sont toute disponibles dans vos JavaScript
Code javascript :
1
2
3
4
5
6
7
8
  alert(scriptData.message);
  document.getElementById('btn').onclick = function () {
    if (200 == scriptData.resultCode) {
      alert('user name : ' + scriptData.user.name)
    } else {
      alert('invalid Query !')
    }
  }

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 50
Vieux 10/11/2011, 12h56   #2
Membre régulier
 
Avatar de amerex
 
Inscription : septembre 2007
Messages : 224
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Canada

Informations forums :
Inscription : septembre 2007
Messages : 224
Points : 91
Points : 91
Très intéressant!
Pour les petits bouts de code à intégrer, à l'inverse, de JavaScript dans PHP, le problème est les guillemets-simples et les guillemets-doubles...

J'utilise cette technique:

Code :
1
2
3
4
5
6
7
8
 
<?PHP
 
  $Message = '"Hello World!"';
 
  Print "<a href='#' onClick = 'return confirm(".$Message.");'>Test</a>";
 
?>
__________________
Amerex
«La chance sourit aux audacieux»
Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

N'oubliez pas de noter les messages!
amerex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 13h50   #3
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
Citation:
Envoyé par amerex Voir le message
Très intéressant!
Pour les petits bouts de code à intégrer, à l'inverse, de JavaScript dans PHP, le problème est les guillemets-simples et les guillemets-doubles...

J'utilise cette technique:

Code php :
1
2
3
4
5
6
7
8
 
<?PHP
 
  $Message = '"Hello World!"';
 
  Print "<a href='#' onClick = 'return confirm(".$Message.");'>Test</a>";
 
?>
Code php :
1
2
3
$scriptData = Array(
  'message' => "Hello World!"
);

Code html :
1
2
3
4
<script type="text/javascript">
  scriptData = <?php echo json_encode($scriptData ); ?>;
</script>
<a href="#" onClick ="return confirm(scriptData.message);">Test</a>
ainsi il n'y a pas de pb de " ou '
il n'y a plus de mélange de code php avec js
car le json inclus toutes les variables php que l'on veut passer dans l'objet js scriptData
du coup coté html js il suffit d'utiliser l'objet scriptData

mieux du fait que le code js n'est pas généré il peut être dans un fichier js statique lié à la page. du coup le compilateur javascript du navigateur garde la version compilé en cache ce qui évite contrairement au script généré de le recharger et le recompiler.

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 50
Vieux 23/01/2012, 05h26   #4
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 3 405
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 42
Localisation : Réunion

Informations professionnelles :
Activité : Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2002
Messages : 3 405
Points : 6 676
Points : 6 676
je viens de lire l'article du magazine sur le JS embarqué...je suis partiellement d'accord avec ces affirmations.

Toutes les fonctions génériques (et il est préférable de généraliser ses fonctions) ont leur place dans des fichiers .JS, pas uniquement pour des questions de caches, mais aussi pour éviter de toujours reproduire le même code.

Par contre je doute qu'ajouter une 10ène de ligne JS dynamiques dans une page web ai une quelconque influence sur les performances du navigateur.

J'irais même jusqu'à dire que produire du JS dynamique en réponse à une requête AJAX pourra rendre la page bien plus efficace que de recharger son code HTML

Quand au cache, il est souvent pénible en cours de développement car justement la mise à jour des fichiers JS passe parfois inaperçue et le navigateur continue d'exploiter l'ancien code.

Par contre, je trouve le passage de variable via json assez élégant en effet.
__________________
Developpez.com: Mes articles
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice sous Delphi
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 14h07   #5
Membre Expert
 
Avatar de mr_samurai
 
Inscription : décembre 2007
Messages : 957
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 957
Points : 1 007
Points : 1 007
J'utilise cette technique intuitivement depuis un moment .

L'interet principale est de localiser les échanges de données entre PHP et JS au niveau d'un seul objet. Ainsi, la maintenance du code se trouve simplifiée.

Sur mes projet j'ai toujours quelquechose du genre:

Code :
1
2
3
4
$appDebug = true;
....
 
$jsData = { 'debug' => $appDebug,... };
++
__________________
Matlab 2008b / Vista

| FileExchange | Matlab: FAQ, Tutoriels |
NoTechnicalMp users' group
mr_samurai est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h53.


 
 
 
 
Partenaires

Hébergement Web