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 :

Transférer un tableau PHP en paramètre à une fonction javascript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Points : 64
    Points
    64
    Par défaut Transférer un tableau PHP en paramètre à une fonction javascript
    Bonjour,
    après plusieurs heures bloqué sur le même problème, je me décide à poster un message dans le forum
    ce sujet a déjà été traité maintes fois et j'ai déjà trouvé des exemples, mais j'ai toujours à chaque fois des erreurs dans mon cas

    dans un script PHP j'ai un tableau avec des numéros de fournisseurs ($tab_supplier)

    je génère mon code HTML via un print et je souhaite passer ce tableau PHP à une fonction Javascript comme suit :
    j'ai vu qu'une méthode consistait à transformer le tableau en une chaine et j'ai utilisé comme séparateur ici : /

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_split = implode("/",$tab_supplier);
    voici le détail du bouton html qui va déclencher ma fonction javascript lorsque je clique dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" title="" value="Editer les demandes de prix" onClick="editDP('. $tab_split .')">
    et enfin voici la fonction javascript qui est censé récupérer cette chaine et la retransformer dans un tableau javascript exploitable par ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //Fonction d'édition des demandes de prix
    function editDP(tab_supplier)
      {    
                var tab = tab_supplier.split("/");
    	   for (var i = 0, c = tab.length; i < c; i++) {
    	   alert(tab[i]);}
     }

    voici ce que me donne la console pour le bouton HTML (par exemple ici j'avais quatre éléments dans mon tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" title="Edition des demandes de prix" value="Editer les demandes de prix" onclick="editDP(4664/8423/5406/8536)">
    sur la console javascript j'ai l'erreur suivante :
    Uncaught TypeError: tab_supplier.split is not a function
    at editDP (script.js:32)
    at HTMLInputElement.onclick (show_dp.php:188)


    j'ai essayé plein de combinaisons, mais je ne m'en sors pas ...

    Merci pour votre aide
    http://www.medianeo.net

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Avec des apostrophes ça fonctionne.

    onclick="editDP('4664/8423/5406/8536')" au lieu de onclick="editDP(4664/8423/5406/8536)">
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Points : 64
    Points
    64
    Par défaut
    bonjour,
    oui merci je pense que c'est ça mais j'ai déjà essayé de les mettre de différentes façons et ça ne fonctionne pas

    comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onClick="editDP('.'"'.$tab_split.'"'.')"
    j'ai une erreur : Uncaught SyntaxError: Unexpected token }
    http://www.medianeo.net

  4. #4
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Ton code php m'étonne. Je ne vois pas le print.

    Peux-tu poster la partie qui le précède et le suit ?

    Pour ma part, j'utilise souvent la structure suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onClick="editDP('<?php print $tab_split;?>')"
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Points : 64
    Points
    64
    Par défaut
    en fait j'ai mis le détail de mon html dans une variable php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $formular_add_supplier ='<form name="selectall" method="post" enctype="multipart/form-data"><input type="button" title="Edition des demandes de prix" value="Editer les demandes de prix" onClick="editDP("$tab_split")"></form>';
    et ensuite j'utilise mon print pour l'afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print $formular_add_supplier;
    j'avais déjà essayé cette formule avec le echo mais elle semble inopérante car le echo doit être interprétée comme un texte

    je vais réessayer quand même
    http://www.medianeo.net

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Points : 64
    Points
    64
    Par défaut
    Avec cette syntaxe ci-dessous mon script PHP ne fonctionne plus ... il y a sans doute une astuce ou une histoire de guillemets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onClick="editDP('<?php print $tab_split;?>')"
    http://www.medianeo.net

  7. #7
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Essaie comme ça.

    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
     
    <?php
     $tab_split = "4581/1214/4581";
     // avant
     $formular_add_supplier ='<form name="selectall" method="post" enctype="multipart/form-data"><input type="button" title="Edition des demandes de prix" value="Editer les demandes de prix" onClick="editDP("$tab_split")"></form>';
     print $formular_add_supplier;
     ?>
     
     
     <br/>
     
     
     <?php
     $tab_split = "4581/1214/4581";
     // après
     $formular_add_supplier ='<form name="selectall" method="post" enctype="multipart/form-data"><input type="button" title="Edition des demandes de prix" value="Editer les demandes de prix" onClick="editDP(\''.$tab_split.'\')"></form>';
     print $formular_add_supplier;
     ?>


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    avant :
    <form name="selectall" method="post" enctype="multipart/form-data"><input type="button" title="Edition des demandes de prix" value="Editer les demandes de prix" onClick="editDP("$tab_split")"></form>
     
    après :
    <form name="selectall" method="post" enctype="multipart/form-data"><input type="button" title="Edition des demandes de prix" value="Editer les demandes de prix" onClick="editDP('4581/1214/4581')"></form>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Points : 64
    Points
    64
    Par défaut
    Merci beaucoup badaze, ça fonctionne bien maintenant !
    http://www.medianeo.net

  9. #9
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Je ne comprends pas du tout l'interêt du split et toute autre bricolage pour ce genre de besoin.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $phpArray = array(4581,1214,4581);
     
    //=> <script>var jsArray = [4581,1214,4581];</script>
    echo '<script>var jsArray = ' . json_encode($phpArray) .';</script>';
    et en javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Fonction d'édition des demandes de prix
    function editDP(tab)
    {
      for (var i = 0, c = tab.length; i < c; i++) {
      alert(tab[i]);}
    }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" title="Edition des demandes de prix" value="Editer les demandes de prix" onClick="editDP(jsArray)">

    explication php manipule un array phpArray et y place ce qu'il veut dedans
    il de transmet à javascript dans un tableau js jsArray

    le html purement statique peut utiliser le tableau
    onClick="editDP(jsArray)"

    du coup je ne comprends pas pourquoi passer par un séparateur puis un split alors que l'on peut transmettre n'importe quelle structure de donnée de php à js.

    A+JYT

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/05/2013, 14h52
  2. passer les paramètres à une fonction javascript
    Par phenix1988 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/01/2012, 23h19
  3. Réponses: 1
    Dernier message: 25/10/2007, 21h25
  4. Réponses: 3
    Dernier message: 10/08/2007, 16h07
  5. [PHP-JS] appeler une fonction javascript dans un lien
    Par kawther dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2007, 10h43

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