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 :

[AJAX+PHP] Récupérer une liste de checkbox en tableau


Sujet :

JavaScript

  1. #1
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 397
    Points : 133
    Points
    133
    Par défaut [AJAX+PHP] Récupérer une liste de checkbox en tableau
    Bonjour,

    J'ai un listing de checkbox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="checkbox" name="droit" />
    <input type="checkbox" name="droit" />
    <input type="checkbox" name="droit" />
    ..
    Je veux récupérer ce listing sous forme de tableau en PHP.
    Comme on pourrait le faire de cette forme.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="checkbox" name="droit[]" />
    <input type="checkbox" name="droit[]" />
    <input type="checkbox" name="droit[]" />
    Après un submit, on aurait $_POST['droit'].

    ..

    J'ai bien mon nombre d'éléments avec le tableau en JS.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName('droit').length
    Mais quand je le transmets de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send('tab=' + document.getElementsByName('droit'));
    Coté serveur je récupère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print_r($_POST['tab']);
    
    [object HTMLCollection]
    Comment puis-je récupérer ce tableau automatiquement coté serveur ?
    Edit: je ne veux pas submit mon formulaire en utilisant la méthode classique


    Merci.

  2. #2
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 397
    Points : 133
    Points
    133
    Par défaut
    Un début de réponse, il faut boucler pour obtenir ce passage de paramètres.
    Ce n'est pas trop automatique mais ça fonctionne pour le moment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau[0]=abc&tableau[1]=abcd...
    Une autre solution ?

  3. #3
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Pour que PHP considère les données comme un tableau avec AJAX tu dois
    reproduire la même requête avec AJAX que en postant le formulaire. Je
    te conseil d'observer cette requête avec LiveHTTPHeader ou Firebug. Tu observera
    qqch qui ressemble à ceci:

    droit[]=1&droit[]=0&droit[]=0...

    0 ou 1 je suis pas sur, c'est peutêtre yes et rien (voir la spec pour les valeur
    par défaut des checkbox)

    Perso en Ajax je transmet les données plus simplement, sous forme d'une
    chaine représentant les index des cases cochées séparée par des virgules.

    tab=0,2,7

    les index non énumérés sont considéré comme non coché. ou alors une chaine
    avec toutes les cases avec des 0 et des 1

    0,0,1,0,0,0,1

    coté PHP tu utilise explode(',', $POST['tab']);

    Revenons à Javascript, il faut créer la chaine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var cb = document.getElementsByName('droit');
    var ids = new Array();
    for(var i=0;i<cb.length;i++) {
      if(cb[i].checked) ids[ids.length] = i;
    }
    xhr.send('tab=' + ids.join(','));

  4. #4
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 397
    Points : 133
    Points
    133
    Par défaut
    Oké j'vais faire ça, j'ai une préférence pour le tableau fait maison plutôt que la chaine de caractère.

    Merci.

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

Discussions similaires

  1. Récupérer Id cliqué dans une liste de checkbox
    Par dominos dans le forum jQuery
    Réponses: 3
    Dernier message: 22/11/2011, 14h25
  2. Comment récupérer une liste de checkbox
    Par guillaume06 dans le forum Struts 1
    Réponses: 7
    Dernier message: 28/02/2008, 19h25
  3. ajax,rafraichissement avec une liste deroulante
    Par klimero dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/04/2006, 09h41
  4. [VB]Récupérer une liste de fichiers
    Par yaya54 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/02/2006, 16h03
  5. Réponses: 4
    Dernier message: 24/11/2005, 09h11

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