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 :

[DOM] Comment remplir un champ de type array via Javascript ?


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut [DOM] Comment remplir un champ de type array via Javascript ?
    Bonjour,
    Voilà j’ai une fonction JS qui a chaque exécution récupère une valeur.
    J’ai un formulaire avec un champ caché destiné à accueillir toutes les valeurs renvoyé par ma fonction JS.

    Comment fait-on ?

    Code JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function deleteCurrentRow(obj,num_tbody,id_prestation_sup)
    {
    		….  Début instruction ….
     
    var id_prestation_sup = id_prestation_sup;
     
    …. Suite …
     
    }
    code HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <form name="reservation" id="reservation" method="post" action="">
    <input type="hidden" name="prestation_a_supprimer[]" value="">
    Ce que je souhaite faire c’est mettre chaque id_prestation_sup récupérer le champ :

    <input type="hidden" name="prestation_a_supprimer[]" value="">

    Par avance merci

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms["reservation"].elements["prestation_a_supprimer[]"].value+=id_prestation_sup

  3. #3
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    Merci Matthieu2000, mais cela ne fonctionne pas pas
    page de test

    message d'erreur :
    document.forms.reservation.elements['prestation_a_supprimer[]'] has no properties


  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par tavarlindar Voir le message
    Merci Matthieu2000, mais cela ne fonctionne pas pas
    page de test

    message d'erreur :
    document.forms.reservation.elements['prestation_a_supprimer[]'] has no properties
    Ca aurait dû

    Qu'est ce qu'il vient faire là ce ";" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="prestation_a_supprimer[];"


    A+

  5. #5
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    exacte !
    j'avais modifié avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('array_prestation_a_supprimer').value+= id_prestation_sup;
    J'ai remis depuis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.forms["reservation"].elements["prestation_a_supprimer[]"].value+=id_prestation_sup;
    Par contre, je suis surpris par le contenu obtenu.
    Les datas sont concaténées. Si je supprime 3 lignes, j'ai un array avec une seule valeur.... Que je fasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.forms["reservation"].elements["prestation_a_supprimer[]"].value+=id_prestation_sup;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.forms["reservation"].elements["prestation_a_supprimer"].value+=id_prestation_sup;
    C'est pareil !

    Code Php pour récupérer :
    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
     
    // Suppression des prestations 
    if (isset($_POST['prestation_a_supprimer'])) {
     foreach($_POST['prestation_a_supprimer'] as $key => $id_prestation_a_deleter) {
       echo "<p>".$key." : ".$id_prestation_a_deleter."</p>";
      }
    }
     
     
    // ou 
     
    if($_POST["prestation_a_supprimer"]) { 
       for ($j = 0; $j < count($_POST["prestation_a_supprimer"]); $j++)
       {
       $id_prestation_a_supprimer = $_POST["prestation_a_supprimer"][$j];
       $requete_suppression_presta = "DELETE FROM prestation WHERE id_prestation ='{$id_prestation_a_supprimer}'";
       echo $requete_suppression_presta. '<br />';
      //ExecRequete ($requete_suppression_presta, $connexion);
       } 	
    }
    Alors soit je rajoute un caractère séparateur et je split derrière (explode), soit .... j'essaye d'avoir un vrai array si vous voyez ce que je veux exprimer.

    page test pour mieux comprendre

    supprimer 2 ou 3 lignes et valider. Vous aurez à l'écran le résultat du code php

  6. #6
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    Dites moi si je me trompe mais : si j'effectue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    document.forms["reservation"].elements["prestation_a_supprimer[]"].value+=id_prestation_sup +'|' ;
    A chaque appel de la fonction je remplis bien prestation_a_supprimer[] qui est un array avec un seul élément avec les différents id_prestation seront séparés par | . Du du coup aucun intérêt, ce la complique le traitement derrière.

    Autant utiliser un simple champ (caché) prestation_a_supprimer.
    avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.forms["reservation"].elements["prestation_a_supprimer"].value+=id_prestation_sup +'|' ;
    et côté serveur un code du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if($_POST["prestation_a_supprimer"]) { 
    $tab_id_a_supprimer = explode("|",$_POST['prestation_a_supprimer']);
    $nb_elts = count($tab_id_a_supprimer)-1;
       for ($j = 0; $j < $nb_elts; $j++)
       {
       $id_prestation_a_supprimer = $tab_id_a_supprimer[$j];
       $requete_suppression_presta = "DELETE FROM prestation WHERE id_prestation ='{$id_prestation_a_supprimer}'";
       echo $requete_suppression_presta. '<br />';
      //ExecRequete ($requete_suppression_presta, $connexion);
       } 	
    }
    NON ?

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par tavarlindar Voir le message
    NON ?
    Si !

    Pour info, ta notion de tableau (matérialisée par ton name avec []) n'existe pas en HTML. Il s'agit d'un fonctionnement PHP pris en compte de cette manière en HTML.
    Aussi, tu dois effectivement récupérer ton tableau soit dans un "vrai" Array Javascript, soit dans un input, quelque soit son type, dans lequel tu concatènes tes valeurs avec un séparateur (puis split() etc.)

    A+

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    pour obtenir directement un array coté php il faudrait créer au moyen du DOM un nouveau input hidden avec le même name à chaque ajout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var newInput=document.createElement((document.all)?'<input name="prestation_a_supprimer[]" />':'input';
    if (!document.all){newInput.name='prestation_a_supprimer[]';
    newInput.type=hidden;
    du coup coté php tu récupère direct le $_Post en array
    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 éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    Monsieur SpaceFrog, Vous avez parfaitement raison.
    Merci encore à tous pour votre aide.

    Bien à vous

    Tavar

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

Discussions similaires

  1. Comment remplir les champs d'une autre application ?
    Par rico32fr dans le forum C++Builder
    Réponses: 6
    Dernier message: 19/06/2006, 08h54
  2. Réponses: 5
    Dernier message: 10/05/2006, 15h47
  3. Réponses: 1
    Dernier message: 03/05/2006, 10h02
  4. [Sql] Comment inserer un champs de type Date ?
    Par ridondo dans le forum DB2
    Réponses: 4
    Dernier message: 28/11/2005, 14h40
  5. comment remplir 2 champs avec une seule listbox
    Par Didi17 dans le forum Access
    Réponses: 3
    Dernier message: 19/10/2005, 09h42

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