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

jQuery Discussion :

$post comment faire passer mes variables?


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut $post comment faire passer mes variables?
    Bonsoir,

    J'ai un script php qui génère un formulaire. Un onSubmit sur ce formulaire déclanche une fonction javascript qui est celle là:

    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
     
    function affecter(logiciel, nbrCheckbox)
    {
         var commentaire = $('#form_affectation').find("input[name=commentaire]").val();
         var version = $('#form_affectation').find("input[name=version]").val();
         var nbrCheckbox = nbrCheckbox;
         for(i=1 ; i <= nbrCheckbox ; i++) 
         {
              var currentCheckbox = document.getElementById("salle_" + i);
             if(currentCheckbox.checked) 
              { 
                   window[currentCheckbox] = document.getElementById("salle_" + i).value
                   alert(currentCheckbox.name + " est coché et son id est " + window[currentCheckbox] );	
             }
         }		
    }
    mon script 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
     
    ...
    $nbr_salles = mysql_num_rows($result);
    $numCheckbox =0;
    $echo .= "<form id='form_affectation' onsubmit='affecter($id_logiciel, $nbr_salles); vider_div(\"tableau_logiciels_salles\"); return false;'>";
    $echo .= "Version logiciel : <input type='text' name='version' size=30>";
    $echo .= "Commentaire : <input type='text' name='commentaire' size=30>";
    while ($res=mysql_fetch_array($result)) 
    {
        $numCheckbox++;
        $echo .= "<input type=checkbox name='salle-".$res['numSalle']."' id='salle_".$numCheckbox."' value=".$res['idSalle']." />".$res['numSalle']." (".$res['nomSite'].")<br>";
    }
    $echo .= "<input type='submit' value='Afficher'>";
    $echo .= "</form>";
    Désolé mon code est un peu longt (et encore je l'ai simplifié ).
    Ah oui et aussi, j'ai lu qu'il ne fallait pas mettre de php, mais je l'ai mis quand meme pour que vous compreniez d'ou vient l'id de mes checkbox et mon paramètre nbrCheckbox

    Pour l'instant ma fonction affecter() ne fait que des alert() et ça marche. Par exemple si je coche 4 checkbox alert j'ai 4 alert() qui s'exécute à la suite indiquant l'id du checkbox et l'id de la salle (pour ma base de donné).

    Maintenant ce que j'aimerais c'est utiliser le $post en ajax pour pouvoir passer les id des salles que l'on a coché dans une page php qui exécutera une requète. Et là c'est la catastrophe, j'ai appris qu'on ne pouvait pas passer de tableau !!!
    Alors ma question est simple : comment faire?
    (Question simple -> réponse difficile )

    J'ai essayé pleins de trucs qui n'ont pas marché dont ç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
    19
    20
    21
     
    function affecter(logiciel, nbrCheckbox)
    {
         var commentaire = $('#form_affectation').find("input[name=commentaire]").val();
         var version = $('#form_affectation').find("input[name=version]").val();
         var nbrCheckbox = nbrCheckbox;
         for(i=1 ; i <= nbrCheckbox ; i++) 
         {
              var currentCheckbox = document.getElementById("salle_" + i);
               if(currentCheckbox.checked) 
               { 
    	   window[currentCheckbox] = document.getElementById("salle_" + i).value
                    alert(currentCheckbox.name + " est coché et son id est " + window[currentCheckbox] );
                     $.post("jQuery/affecter.php", {id_logiciel: id_logiciel, currentCheckbox: window[currentCheckbox] },
                         function success(data){
                                 alert("ça marche");
                      });
     
                  }
         }
    }
    Bon là c'était évident que ça n'allait pas marché mais on sait jamais

    Donc voilà si quelqu'un veut bien se pencher sur mon cas je serais très heureux...

    merci d'avance ++

  2. #2
    Membre éclairé
    Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut
    Pour résumer , tu veux pouvoir passer 4 identifiants en AJAX sachant que ça concerne 4 checkbox?
    Parce que là le code est un peu indigeste , j'essaie de simplifier ta requête.
    Oops j viens de voir que c'était jquery.. Desolé je reçois par rss les questions.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut
    Bonjour cotede2

    Oui mon problème vient bien de jQuery et plus particulièrement de la fonction ajax $post .

    Le but est de passer les valeurs des checkbox cochés dans une page php.

    Merci quand meme ++

    PS: désolé pour le code indigèste je ne vois pas comment le simplifier plus

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En utilisant surement serialize()

    Voir ici pour $.post()

    A+

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut
    Merci pour les liens

    J'ai essayé avec .serialize() mais ça ne marche pas. Pourtant je fais exactement comme sur la documentation jQuery.

    Voilà ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $(document).ready(function(){
     
        function showValues() {
          var str = $("form").serialize();
          alert(srt);
        }
        $(": checkbox").click(showValues);
        showValues();
     
    });
    et le code html généré par mon scipt 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <form>
       <table border=1>
          <tr>
             <td colspan=4 align='center'>
                Version logiciel : <input type='text' name='version' size=30>
             </td>
          </tr>
          <tr>
             <td colspan=4 align='center'>
                Commentaire : <input type='text' name='commentaire' size=30>
             </td>
          </tr>
          <tr>
             <td colspan=4 align='center'>
                Date : <input type='text' name='date' value=2009-10-31 size=30>
             </td>
          </tr>
          <tr>
             <td>
                <input type='checkbox' name='salle' id='salle_1' value=6 checked='checked'/>
                <label for='salle_1'>A099 (C2M - Denis Papin)</label><br>
                <input type='checkbox' name='salle' id='salle_2' value=5 checked='checked'/>
                <label for='salle_2'>B020 (C2M - Denis Papin)</label><br>
                <input type='checkbox' name='salle' id='salle_3' value=4 checked='checked'/>
                <label for='salle_3'>B055 (C2M - Sciences)</label><br>
                <input type='checkbox' name='salle' id='salle_4' value=2 checked='checked'/>
                <label for='salle_4'>C100 (C2M - Denis Papin)</label><br>
             </td>
          </tr>
          <tr>
            <td colspan=4 align=center>
              <input type='submit' value='Afficher'>
            </td>
          </tr>
       </table>
    </form><br>
    Je me demande si ce n'est pas le fait que mon formulaire soit généré par du php le problème... non?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $(document).ready(function(){
     
        function showValues() {
          var str = $("form").serialize();
          alert(srt); // c'est plutot str
        }
        $(": checkbox").click(showValues); // pas d'espace entre : et checkbox
        showValues();
     
    });
    Que t'affiche "alert(str)"?

    a+

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

Discussions similaires

  1. Comment faire passer une variable en plus d'un formulaire
    Par frisouille12 dans le forum Langage
    Réponses: 1
    Dernier message: 06/08/2009, 15h06
  2. Comment faire passer un menu par dessus une autre frame
    Par barthelv dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/11/2005, 11h03
  3. faire passer une variable d'une fct js à une page php
    Par harlock59 dans le forum Langage
    Réponses: 1
    Dernier message: 25/11/2005, 14h41
  4. Réponses: 5
    Dernier message: 08/03/2004, 10h28

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