IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Appel de JavaScript avec un echo


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut Appel de JavaScript avec un echo
    Bonjour,

    Je viens poster sur le forum car je suis un peu bloqué... Je tente de faire appel à une fonction en javascript avec un echo, de la maniere suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo'<script type="text/javascript" language="javascript" src="js/availability.js"> change_class('. $indice .');</script>';
    Ma fonction js en question est ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function change_class(b) {
     
    	var avail = document.getElementById("available"+b); 
    	avail.className= "yes";
     
    }
    Après un tour d'horizon sur google, beaucoup de personnes postent des appels de javascript similaires, et cela n'a pas l'air de leur poser de problèmes. J'ai lu aussi beaucoup de programmeurs qui aggressaient un peu en disant "Oui, PHP est orienté serveur, c'est complètement nul d'appeler du javascript qui est orienté client, arrétez de pourrir le web avec vos sites pourris!" (Je précise que je n'ai pas lu ça sur un forum développez...)
    Or, dans mon cas, il me semble difficile de faire autrement, car ma fonction change_class me permet de modifier mon .css, et j'ai 28 éléments potentiellement modifiables.

    Si quelqu'un a une solution différente, ou voit une erreur qui m'aurait échappé.
    Je précise que j'utilise IE7 (et oui, personne n'est parfait ) et que lorsque j'ouvre ma page, il ya marqué: Terminé, mais il existe des erreurs sur la page (on dirait une erreur javascript, non?)

    Merci à ceux qui prendront le temps de m'aider.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Bonjour,

    Utilises Firefox pour tester ta page, il a une console d'erreur qui t'indiquera precisemment les problemes javascript.

    Sinon pour le fond, il semble effectivement que l'utilisation du javascript soit inutile.
    Plutot que de faire une variable PHP, l'inserer dans du javascript pour lui faire modifier une composante HTML, ecris directement ta composante HTML en fonction de la variable.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 135
    Par défaut
    D'accord avec sabotage...
    et télécharges le module de firefox : "firebug" ...TRES utile pour le debugage, et très utile si tu fais un site en Ajax (il te permet de visualiser le code html correspondant à ta page ... et non le code statique inscrit dans les fichiers serveurs)

    [edit] si tu tiens à rester sous IE7, cliques sur le petit icone d'erreur pour avoir des détails sur l'erreur...

    aussi, si tu fais apel à ton javascript de la sorte, il s'execute au chargement de la page si je ne m'abuse... il faut l'executer une fois que la page est chargée (ce qui assure que tout le document est chargé)... autrement dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.onload=function(){ ce que tu veux faire }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut
    Merci pour vos réponses,

    Les informations données par la petite icone sous IE7 ne m'ont guère aidé: j'ai donc installé le module Firebug sous Firefox. Je constate que j'ai bien l'appel de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo'<script type="text/javascript" language="javascript" src="js/availability.js"> document.onload=change_class(28);</script>';
    J'ai donc bien l'élément n°28 qui est censé subir change_class une fois la page chargée (document.onload sur les conseils d'icareo)

    L'information tirée par l'affichage du code une fois chargé coté client est que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="seatprocess.php?seat=28&amp;passeport=0010001" class="no" id="available28"/>
    On peut donc voir que la classe de mon élément "available28" est restée "no", alors qu'elle devrait être passée à "yes".

    Ce qui m'étonne encore plus, c'est que j'utilise une fonction très similaire à change_class dans une autre page et elle marche parfaitement...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 135
    Par défaut
    essaye window.onload ? ça marchera surement mieux

    sinon, laisse le comme tu l'avais mis...Je suis pas un expert en javascript, mais je crois que dans ce cas, il faut inclure ta feuille de style AVANT le script (il me semble que les instructions situées entre <script> et </script> n'attendent pas que la page soit complètement chargée pour s'executer... donc si les classes ne sont pas définies au moment où il se charge, le script ne sait pas à quoi correspond ce que tu modifies)
    enfin faut voir, c'est ce que j'ai compris jme plante peut-être

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut
    Tout d'abord, merci à toi d'avoir suivi mon problème. J'ai changé, sans succès mon document.onload par window.onload. Par contre je ne suis pas sûr de bien saisir le sens de cela:

    Citation Envoyé par icareo Voir le message
    il faut inclure ta feuille de style AVANT le script
    car sur ma page, c'est le cas: ma feuille de style est appelé dans le head de mon html, qui n'est pas généré par php.

    Je ne pense pas que ce soit un problème de feuille de style car la classe de mon élément "available28" n'a même pas été changée.

    Je suis juste débutant en php et javascript, mais je pensais que l'ordre d'exécution de php était le suivant: il traite les requêtes sql, ensuite génère éventuellement du html, exécute le code et envoie la page ainsi crée au client.

    Peut-être ai-je mal compris ce que tu tente de m'expliquer, mais je ne vois pas trop comment modifier mon code pour que cela soit fonctionnel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. appel fonction javascript avec argument null
    Par cecile38 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 12/01/2011, 10h54
  2. Appeler du JavaScript avec des AutoGenerateButtons
    Par Johann7751 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/01/2011, 15h54
  3. Réponses: 4
    Dernier message: 27/09/2009, 15h25
  4. Réponses: 1
    Dernier message: 04/03/2009, 00h11
  5. Appel en Javascript avec paramètres vers Php
    Par francoisch dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/12/2007, 19h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo