Votre question

Exécuter du PHP dans une fonction JS

Tags :
  • Html
  • Programmation
Dernière réponse : dans Programmation
a c 232 L Programmation
7 Août 2006 23:34:21

Salut à tous,

Je sais, mon titre n'est pas super explicite, mais je savais pas trop expliquer mon problème en fait !
Ca doit être la première fois que je poste un problème sur ce site ! Oh mon dieu !


Bon, alors, en fait, je veux créer des div à la volée, mais les créer avec un contenu généré par une fonction PHP. Le problème, c'est que le résultat m'affiche du code html...

Petites explications avec un exemple :

  1. function test() {
  2. var e = document.createElement("div");
  3. var f = document.createTextNode(<?php mafonctionPHP(); ?>);
  4. e.appendChild(f);
  5. document.getElementById('sidecontent').appendChild(e);
  6. }


Donc ce code me créé bien une div dans ma div "sidecontent", mais le texte résultant de ma fonction PHP est écrit en clair en HTML...
J'ai comme résultat "<table><tr><td>..."

Est-ce que quelqu'un connaît une méthode pour que je puisse "exécuter" ce code ? j'ai testé avec html_entity_decode, ça a pas marché.

Merci !

Autres pages sur : executer php fonction

8 Août 2006 00:40:53

Et si tu fais simplement: sidecontent.style.visibility="visible".
Pit-et qui c'est bon.

Je ne sais même pas si on peut exécuter des commandes PHP en javascript.
a c 232 L Programmation
8 Août 2006 07:14:13

Citation :
Et si tu fais simplement: sidecontent.style.visibility="visible".
Pit-et qui c'est bon.


Bah le problème, c'est que j'ai 6 liens, et que au survol de chacun d'eux, je veux que dans une div à coté ça affiche quelque chose de différent, en fonction du survol.
Au début, je voulais faire avec les styles et "display = 'block'" ou "display = none", mais il faudrait que je cache tous les autres éléments... ce qui est un peu la merde à faire ! Afficher un élément puis cacher les 5 autres, bordel quoi ! :-P

Citation :
Je ne sais même pas si on peut exécuter des commandes PHP en javascript.


Bah normalement si.
Mais j'ai avancé un peu, si je rajoute des simples quotes autour de <? ?>, comme ceci :
  1. var f = document.createTextNode('<?php maFonction(); ?>');

ça m'affiche bien mon code HTML dans ma source, le seul problème, c'est que ça saute des lignes, et que donc, l'exécution ne marche pas, vu que le JS n'aime pas les sauts de ligne.

Mon str_replace("\n", "", maFonction()); n'a rien donné, donc je vais essayer de voir ça...

Merci quand même pour ta réponse
Contenus similaires
8 Août 2006 13:18:01

Tu numérote les types de DIV en question.
Puis tu crée une petite routine qui n'a comme fonction que de faire un display='none'.
Tu appel cette routine en passant comme paramètre, le type (donc le numéro) de la DIV que tu veux afficher.
Si, en exécutant la routine que tu viens d'écrire, le numéro de la DIV correspond au numéro de la DIV que tu viens de faire, tu fait un display='block' else display='none'
a c 232 L Programmation
8 Août 2006 13:35:33

ah ouais ! pas bête !
Je vois ça ce soir, je te tiens au courant.

merci :-)
a c 232 L Programmation
8 Août 2006 20:03:24

Bon bah merci pour tout, ça marche !

A vouloir faire trop compliquer, je loupe le plus simple.

Pour ceux que ça intéresserait :

  1. function switchDiv(elem) {
  2. var tab = new Array("calendar", "search", "categories", "archives", "links", "syndicate");
  3. for (i=0; i<tab.length; i++) {
  4. if (elem == tab[i])
  5. document.getElementById(elem).style.display='block';
  6. else
  7. document.getElementById(tab[i]).style.display='none';
  8. }
  9. }
8 Août 2006 20:18:49

Content d'avoir pu t'aider.
8 Août 2006 20:27:47

Si jamais tu veux mêler intéractivité le JS et le php il te faudra te pencher sur l'Ajax, car, n'oublie pas la chose la plus importante :

Javascript : coté client
Php : coté serveur
8 Août 2006 20:33:27

Oui en effet: javascript est du côté client et PHP est du côté du serveur mais parfois il est intéressant d'avoir un résultat côté client, sans devoir faire appel au serveur. Ce qui réduit le temps d'affichage.
8 Août 2006 20:58:32

bien sur, tout dépend de ce que tu souhaite obtenir, mais je ne disait ça que pour un petit "rappel" :) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS