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

JavaScript Discussion :

créer des variables javascript dynamiquement dans un code php


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 65
    Points : 63
    Points
    63
    Par défaut créer des variables javascript dynamiquement dans un code php
    Bonjour,

    n'étant pas fort en javascript, je me permet de vous poser la question.
    Je voudrais créer dans mon code php des variables javascript (en fait des Spry.Widget.Accordion pour ceux qui connaissent) dynamiquement car je ne connait pas à l'avance le nombre de ces variables dont j'aurais besoin.
    En parcourant le FAQ et le forum, jai tenté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    print '<script type="text/javascript">';
    print '<!--';
    print 'window[Accordion'.$i.'] = new Spry.Widget.Accordion("Accordion'.$i.'")';
    print '//-->';
    print '</script>';
    malheureusement, cela ne donne aucun résultat.

    Peut-être faut-il rafraîchir la page vu que l'on se trouve dans du code php?

    Quelqu'un a-t-il une solution?

    Merci d'avance.

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Salut, tu mets quoi dans la variable $i?
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 65
    Points : 63
    Points
    63
    Par défaut
    En fait $i est un itérateur.
    Je l'initialise à 1 et puis je l'incrémente dans une boucle while

  4. #4
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Quand tu dis que sa donne aucun résultat, tu veux dire que le script ne fonctionne pas ou qu'il n'y a rien de généré?

    Quand tu mets "Voir la source" dans ton browser, le code généré à l'air de quoi? Tu peux le mettre ici pour que je puisse le voir. Sinon tu peux donner le lien pour la page Web que tu développes.

    Merci
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 65
    Points : 63
    Points
    63
    Par défaut
    En fait, le code fonctionne très bien.
    Je peux m'amuser à créer et initialiser une centaine de variables manuellement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var Accordion1 = new Spry.Widget.Accordion("Accordion1");
    var Accordion2 = new Spry.Widget.Accordion("Accordion2");
    .
    .
    .
    var Accordion99 = new Spry.Widget.Accordion("Accordion99");
    mais cela n'est pas top.

    Je veux donc créer dynamiquement ces variables dans le code php.
    Car ce n'est qu'à ce moment là que j'utilise un nouvel Accordion.
    En php, je n'ai aucun problème, je charge le Accordion'.$i.' sans difficulté uniquement si j'ai déclaré ma variable au préalable. Mon but ici est de créer la variable javascript que quand j'en ai besoin.
    Comme je ne connais pas bien javascript, j'ai cherché sur le forum et j'ai trouvé la solution de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window['mavariable']=....
    Mais, soit il y a quelque chose d'autre à faire, soit je ne réussi pas à l'intégrer dans mon code php (ici avec les print).
    Il se peut aussi que je doive rafraîchir quelque chose quelque part.
    Quand je dit que cela donne aucun résultat, cela veut dire que la variable n'est pas créée. Il est donc impossible de l'utilisée. Par exemple je n'ai pas initialiser var Accordion3 et je compte sur le fait que cela soit fait dynamiquement (avec le code dans le premier post).Cela ne fonctionne pas. Par contre si je l'initialise "manuellement" alors cela fonctionne.

  6. #6
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Normalement, tu t'y prends tres bien.

    Ca doit donc venir d'autre chose...

    Une fois ta page chargée dans le navigateur, si tu regarde la source du HTML généré, qu'est-ce que tu vois ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 65
    Points : 63
    Points
    63
    Par défaut
    Voila ce que la source affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="Accordion1" class="Accordion" tabindex="0"><div class="AccordionPanel"><div class="AccordionPanelTab">Télévision</div><div class="AccordionPanelContent">test message<script type="text/javascript"><!--Window[Accordion2] = new Spry.Widget.Accordion("Accordion2")//--></script><div id="Accordion2" class="Accordion" tabindex="0"><div class="AccordionPanel"><div class="AccordionPanelTab">Acer</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">HP</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">LG</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Packard Bell</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Philips</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Samsung</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Sony</div><div class="AccordionPanelContent">message</div></div></div></div></div><div class="AccordionPanel"><div class="AccordionPanelTab">PC</div><div class="AccordionPanelContent">test message<script type="text/javascript"><!--Window[Accordion3] = new Spry.Widget.Accordion("Accordion3")//--></script><div id="Accordion3" class="Accordion" tabindex="0"><div class="AccordionPanel"><div class="AccordionPanelTab">Acer</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">HP</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">LG</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Packard Bell</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Philips</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Samsung</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Sony</div><div class="AccordionPanelContent">message</div></div></div></div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Ecran PC</div><div class="AccordionPanelContent">test message<script type="text/javascript"><!--Window[Accordion4] = new Spry.Widget.Accordion("Accordion4")//--></script><div id="Accordion4" class="Accordion" tabindex="0"><div class="AccordionPanel"><div class="AccordionPanelTab">Acer</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">HP</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">LG</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Packard Bell</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Philips</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Samsung</div><div class="AccordionPanelContent">message</div></div><div class="AccordionPanel"><div class="AccordionPanelTab">Sony</div><div class="AccordionPanelContent">message</div></div></div></div></div></div>
    Le Accordion1 a été déclaré de la sorte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var Accordion1 = new Spry.Widget.Accordion("Accordion1",{defaultPanel:id_panel});
    Les autres Accordions se trouvent dans le premier Accordion.
    (Ce code fonctionne très bien si je déclare les variables "manuellement" de la même façon que pour l'Accordion1)
    Les autres Accordions sont générés automatiquement avec ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    $req="SELECT marque FROM BD_marque";
    $res=mysql_query($req);
     
    print '<script type="text/javascript">';
    print '<!--';
    print 'Window[Accordion'.$i.'] = new Spry.Widget.Accordion("Accordion'.$i.'")';
    print '//-->';
    print '</script>';
     
    // on affiche l'accordéon
    echo '<div id="Accordion'.$i.'" class="Accordion" tabindex="0">';
    						                                                                           while($enreg=mysql_fetch_array($res,MYSQL_NUM))
    {
    	$marque=$enreg[0];				
    	// on créée un nouveau panneau 
    	echo '<div class="AccordionPanel">';
    			echo '<div class="AccordionPanelTab">'.$marque.'</div>';
    			echo '<div class="AccordionPanelContent">message</div>';
    	echo '</div>';
    }
    echo '</div>'; // fin de l'accordéon
    En espérant que cela puisse vous aider.
    J'ai également essayé le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    print '<script type="text/javascript">';
    print '<!--';
    print 'Window["Accordion'.$i.'"] = new Spry.Widget.Accordion("Accordion'.$i.'")';
    print '//-->';
    print '</script>';
    Mais sans succès

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    quelle différence fais tu entre

    et
    vu que tu n'a pas l'air de les déclarer dans une fonction



    Mais peut être que c'est simplement la majuscule de Window qui pose problème ...

    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 65
    Points : 63
    Points
    63
    Par défaut
    Ben justement, je ne veux pas les déclarer à l'avance car je ne sais pas combien de variables j'aurais besoin.
    Donc je veux les déclarer dynamiquement.

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    le tout est de savoir à quel moment tu veux les créer ...

    si tu les crées sur le serveur alors la syntaxe var suffit

    si tu les declares coté client alors il faudra utilisrer window...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Créer des formules Mathématiques dynamiques dans ACCESS
    Par Jeannot45 dans le forum Contribuez
    Réponses: 2
    Dernier message: 08/10/2009, 23h33
  2. [PHP-JS] comment recupérer des variables javascript dans un fichier php
    Par domino_dj dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/02/2007, 11h46
  3. Créer des variables de classe dynamiquement
    Par Sebastien13 dans le forum Langage
    Réponses: 1
    Dernier message: 13/02/2007, 22h00
  4. Créer des variables dynamiques
    Par Sagouin64 dans le forum C++
    Réponses: 19
    Dernier message: 23/12/2006, 01h38
  5. Réponses: 8
    Dernier message: 07/09/2006, 14h41

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