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] Envoyer une variable tableau à un script PHP


Sujet :

JavaScript

  1. #1
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut [AJAX] Envoyer une variable tableau à un script PHP
    Bonsoir,

    Je sais comment envoyer une variable dans un script php avec XMLHTTPRequest.
    Par contre je ne sait pas comment envoyer une variable tableau de type "ma_variable[]".

    Pour détailler un peu plus:

    1) ce que je sais faire:
    Dans la fonction appelante Javascript vers un fichier PHP, pour envoyer une variable simple, on fait comme ça:
    var data = null;
    var s11=1; //par exemple
    data = "s11="+s11;

    xhr.open("POST","script.php",true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.send(data);
    Et du coté du fichier PHP, on réceptionne cette variable s11:
    $s11=$_POST[s11];
    1) ce que je ne sais pas faire:
    comment passer en paramettre une variable de type tableau

    En fait à la finalité, j'aimerai pouvoir envoyé dans un script php le tableau correspondant à une liste de case à cochée. Ainsi, dans mon script php, il me sera possible de pouvoir voir quelles sont les cases qui sont cochées.

    Par ailleurs ,existe-t-il une méthode simple de transmission des cases à cochées par l'intermédiaire de XMLHTTPRequest?

    Merci pour votre aide

  2. #2
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    ne compliques-tu pas un pb simple : si elles sont dans un <form>, seules les valeurs des cases cochées sont envoyées ...

    A+

  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,

    Il te faut sérialiser ton tableau. par exemple avec Array.join

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var s = ton_tableau.join(',');
    coté php tu utilise explode(',', $_REQUEST['...']);

  4. #4
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Je sais bien que je pourrait utiliser une méthode simple sans Ajax, c'est à dire en effectuant un submit() sur mon formulaire des cases à cocher. Je sais bien le faire même. Mais là, je ne veux pas exécuter de submit(), afin rester sur ma page ou j'ai les cases à cocher. Je veux utiliser un type button, qui appele un script javascript, afin d'exécuter une procédure XMLHTTPRequest.

    J'espère qu'on va m'apporter une réponse claire. Merci

  5. #5
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Ok, merci Marcha, je vais étudier ta méthode.

  6. #6
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    ça y é j'ai enfin trouvé une solution pour traiter mes checkbox. Je vous donne le code que j'ai mis en place après tant de temps! Et oui, quand on connait pas trop, c'est long! Comme ça, j'espère que je ferai gagner du temps à des personnes en difficultés. Je sais que ce Tuto n'est pas le but de mon sujet, mais l'avantage, c'est qu'il montre bien comment envoyer un tableau à un script php, par l'intermédiaire de XMLHTTPRequest.

    MINI TUTO POUR TRAITER DES CASES A COCHER AVEC XMLHTTPRequest

    coté HTML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<input type=\"checkbox\" name=\"selection\" value=\"" . $id_responsable . "\" />";
    (Sachant que $id_responsable et diférent pour chaque checkbox)


    coté JS:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    var select_string = "";
    var select = new Array();
    select[0] = 0;
    var j = 0;
     
     
    function ma_foncton(f){
     
    var xhr = Xhr()
     
    xhr.onreadystatechange = function(){
     
    if(xhr.readyState == 4 && xhr.status == 200){
     
        select.length = 0;    //initialisation du tableau, suite à l'éxécution du script PHP
        select[0] = 0;
    	j = 0;           //initialisation du compteur j 
     
       }
    }
     
     
          for (var i=0; i<f.selection.length; i++) {        
     
             if (f.selection[i].checked) {          //Pour chacune des cases cochées...
             select[j] = f.selection[i].value;     //...on renseigne notre super tableau qui servira à transmetre les valeur des cases cochées
             j++;
             }
          }
     
    var select_string = select.join(',');         //ICI, il s'agit de la méthode de sérialisation donnée par Marcha ci-dessus dans ce topic du forum
     
     
    var data = null;
    data = "select_string="+select_string;
     
    xhr.open("POST","script.php",true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.send(data);

    et enfin, du coté PHP:
    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
    <?php
    header('Content-type: text/html; charset=iso-8859-1');
     
    $select_string=$_POST[select_string];
     
    $select = explode(',', $select_string);   //restitution du tableau    
     
     
        foreach ($select as $id_responsable) { 
     
    //ici vous parcourez votre tableau "recontitué" et pour chaque élément vous retrouvez votre valeur : ici c'est $id_responsable. En faite ce tableau inclue uniquement les cases qui on été cochées.
     
        }
     
    ?>

    Note : Ce code ne foctionne pas convenablement si vous disposez que d'une seule case à cocher. En effet, j'ai constaté qu'un certain comportement changeait à propos de l'exploitation des cases à cocher, uniquement dans le cas d'une seule et unique case à cocher. Je n'ai pas vraiment compris ce probleme qui est un cas particulier, mais je l'ai plutôt cerné en tatant et j'ai trouvé un arrangement qui résoud le probleme. Mais bon, dans 95% des cas, votre application aura au moins deux cases à cocher. Si vous voulez le code pour rectifier ce détail, vous pouvez me le demander.

    A+

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

Discussions similaires

  1. envoyer une variable vers plusieurs pages php
    Par wanakill dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/04/2009, 10h50
  2. récuperer une variable d'un script php vers un javascript
    Par naazih dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/05/2008, 09h57
  3. Envoyer une variable d'un script PHP à un autre
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 27/06/2007, 09h41
  4. passer une variable javascript à un script php
    Par kawther dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 30/03/2007, 17h21
  5. Réponses: 3
    Dernier message: 10/11/2006, 10h33

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