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 :

Passer tableau php => js


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Par défaut Passer tableau php => js
    Bonjour à tous,

    Je n'arrive pas à faire un truc pourtant, à mon avis, extrêmement simple...

    J'ai un tableau php du style :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $arr = array('A', 'B', 'C', 'D');

    j'utilise la fonction json_encode() pour encoer mon array et ensuite le passer dans une variable javascript. J'obtiens ceci :

    or j'aimerai obenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [0: "A", 1:"B", 2:"C", 3:"D"]
    Comment puis-je faire ?

    D'avance merci pour vos réponses,

    A+

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 125
    Par défaut
    Salut, c'est un tableau donc dans tous les cas il y a une indexation des données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var tab = ['a', 'b', 'c'];
    tab[2] = tab[0];
     
    // maintenant tab = ['a', 'b', 'a']

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [0: "A", 1:"B", 2:"C", 3:"D"]
    Cette notation ne veut rien dire en JavaScript... Pourquoi voudrais-tu que json_encode() te produise une syntaxe fausse ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre très actif
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Par défaut
    Merci pour vos réponses rapides...

    en fait j'aimerai utiliser les sparklines et utiliser notamment les Tooltip.

    Dans le code exemple, il y a ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    miniChartBarOptions{
         tooltipValueLookups: {
                names: {
                    0: 'Automotive',
                    1: 'Locomotive',
                    2: 'Unmotivated',
                    3: 'Three',
                    4: 'Four',
                    5: 'Five'
                    // Add more here
                }
            }
    }
    J'aimerai y mettre mes propres valeurs. Je me suis donc dit que j'aller encoder un array avec json et passer la variable comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script >miniChartBarOptions['tooltipValueLookups']['names'] = <?php $json_tmp; ?></script>
    avec json_tmp qui renvoie bien l'array ["A", "B", "C", "D"] j'ai vérifié...

    Le graphique apparait nickel sauf les tooltips où j'ai 0, 1, 2, 3 etc au lieu d'avoir mes valeurs A, B, C, D...

    Or si je met en dur mes valeurs dans le tooltipValueLookups['names'], ça marche nickel... donc c que mes données sont mal transmises... et que j'ai du merder quelque part...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 125
    Par défaut
    Bon alors déja, un array est un objet mais un objet n'est pas forcément un array...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    names: {
                    0: 'Automotive',
                    1: 'Locomotive',
                    2: 'Unmotivated',
                    3: 'Three',
                    4: 'Four',
                    5: 'Five'
                    // Add more here
                }
    Selon la déclaration de names, names est un objet ayant 6 propriétés : names.0 = 'automotive', names.1 = 'Locomotive', etc. mais n'est en aucun cas un array. D'ailleurs tu peux essayer names.sort() ou names.reverse(), qui sont des méthodes héritées du prototype de l'array, et tu aura un message d'erreur ("names is not an array").

    Donc soit tu t'arrange en php pour renvoyer non pas un tableau mais bel et bien un objet ayant la même forme (ce qui, selon la structure de données, est la meilleure solution), soit tu fais une modification en javascript pour transformer ton array en cet objet, quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var arrayToObject = function(phpArray) {
        var jsObject = {};
     
        for (var i=0; i<phpArray.length; i++)  {
            jsObject[i] = phpArray[i]
        }
        return jsObject;
    }
     
    // ...
    // ...
    // ...
     
    <script >miniChartBarOptions['tooltipValueLookups']['names'] = arrayToObject(<?php $json_tmp; ?>)</script>


    EDIT : j'en rajoute pour que tu vois bien la différence.
    dans mon code, jsObject[i] = phpArray[i] n'est pas du tout trivial.

    Si cette ligne de code a l'impression de ne rien faire, c'est grâce aux libertés de syntaxes que tu as dans javascript.
    jsObject[i] n'est pas le contenu du tableau jsObject à l'index i, mais c'est l'attribut de l'objet jsObject ayant pour nom la valeur contenue dans la variable i.

    Un petit exemple pour montrer le phénomène :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var hero = {
        nom: 'Aladin',
        alias: 'Prince Ali'
    };
     
    var nomAttribut = 'alias';
     
    window.alert(hero.alias)
    window.alert(hero[nomAttribut]);
    // les 2 alerts renvoient la même chose : "Prince Ali"
    ...oui c'est bien lui, ali abaaaabouaaa...

  6. #6
    Membre très actif
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Par défaut
    ah ok, je suis nul en JS... c'est pourquoi je pensais que c'était un array...

    Bon je regarde ça

    MErci,

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/12/2009, 15h01
  2. passer tableau en reference dans fonction PHP
    Par ju0123456789 dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2008, 15h59
  3. Passer en paramètre un tableau php dans une fonction javascript
    Par hartecel dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/07/2008, 15h17
  4. Passer un tableau PHP en argument dans une fonction javascript ?
    Par The Molo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/05/2007, 12h31
  5. [PHP-JS] Passer un tableau php en tableau JS
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/12/2005, 11h36

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