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] Formulaire dynamique - Récupération de variable


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [AJAX] Formulaire dynamique - Récupération de variable
    Bonjour a tous,

    Je travail présentement sur un formulaire avec liste déroulante dynamique. Le code marche a merveille. Seulement, j'ai besoin de la selection de ma premiere liste pour le résultat final. Je vous met le code et j'explique par la suite.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    function SelectSouscat($catid)
    {	
       $options="";
       // créé un nouvel objet permettant d'envoyer une réponse au côté client
       $objResponse = new xajaxResponse();
       // on selectionne les sous-catégorie en fonction de l'annee de la catégorie mère
       $sql="SELECT annee, modele FROM yamaha WHERE annee = '".$catid."' ORDER BY modele ASC";
       $req=mysql_query($sql);
        $options='&nbsp;Modele: <select onchange="xajax_SelectSiege(this.value)"><option value="">Choose your model</option>';
       while ($souscat = mysql_fetch_array($req))
       {
          // on place toutes les sous-catégories dans des options valables pour la liste SELECT
          $options .= '<option value="'.$souscat['modele'].'">' . $souscat['modele'] . '</option>';
          						
       }
       $options .='</select>';
       // l'Ajax remplacera le innerHTML (html intérieur) de la liste_souscat pour y mettre $options
       $objResponse->addAssign("liste_souscat","innerHTML",$options);
       // envoie la réponse en XML
       return $objResponse->getXML();
    
    }
    
    
    ######################################################################
    #                   LE RÉSULTAT DU SIÈGE DÉSIRÉ                      #
    ######################################################################
    
    
    function SelectSiege($souscate, $catid)
    {
       $options2="";
       // créé un nouvel objet permettant d'envoyer une réponse au côté client
       $objResponse2 = new xajaxResponse();
       // on selectionne les sous-catégorie en fonction de l'id de la catégorie mère
       $sql2=" SELECT annee, yamaha.modele, No, image_no, image_no2, photo2, yamaha.siege, siege_yamaha.description, siege_yamaha.photo FROM yamaha, siege_yamaha WHERE modele = '"  .$souscate."' AND yamaha.siege = siege_yamaha.siege_produit AND annee = '".$catid."' GROUP BY siege ";
       $req2=mysql_query($sql2);
       
       while ($souscat1 = mysql_fetch_array($req2))
       {
          // on place toutes les sous-catégories dans des options valables pour la liste SELECT
         	 
           $options2 .= "<h2>". $souscat1['No']." . " . $souscat1['siege']." </h2><p>". $souscat1['description']."</p> <a href='#' onclick='monpopup(" . $souscat1['image_no'].")'><img class='img_produits' src='". $souscat1['photo']."'/></a><a href='#' onclick='monpopup(" . $souscat1['image_no2'].")'><img class='img_produits' src='". $souscat1['photo2']."'/></a>";
       }
    	
       // l'Ajax remplacera le innerHTML (html intérieur) de la liste_souscat pour y mettre $options
       $objResponse2->addAssign("reponse","innerHTML",$options2);
       // envoie la réponse en XML
       return $objResponse2->getXML();
    
    }
    
    
    
    ######################################################################
    #                   ENREGISTREMENT DES FCT AJAX                      #
    ######################################################################
    
    
    
    $xajax = new xajax();
    //$xajax->debugOn();
    $xajax->registerFunction("SelectSouscat");
    $xajax->registerFunction("SelectSiege");
    $xajax->processRequests();

    Voici mon code html

    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
    <form id="testForm1">
    Année: <select id="liste_cat" onchange="xajax_SelectSouscat(this.value)">
    <option value="" ></option>
    <?php
    $sql="SELECT DISTINCT  annee FROM annee_yam ORDER BY annee DESC";
    	$req=mysql_query($sql) or die(mysql_error());
    	while($cat = mysql_fetch_array($req))
    	{
    	echo '<option value="'.$cat['annee'].'" >' . $cat['annee'] . '</option>';
    	}
    	?>
    	
    <div id="liste_souscat">							
    <select onchange="xajax_SelectSiege(this.value, document.getElementById('liste_cat').value)">						</select>
    													</div>
    <div id="reponse"></div>
    Alors je voulais simplement reprendre la variable $catid (qui correspond a l'élément selectionner de ma premier liste) de ma fonction SelectSouscat car j'en ai de besoin pour ma deuxieme liste. Pour s'y faire, jai mit document.getElementById('liste_cat').value dans le onchange de ma deuxieme liste. Le code me semblait bon mais lorsque je lance je choisi un modele (de ma 2ieme liste) une fenetre alert m'apparait et me dise qu'il me manque l'argument 2 dans la fonction SelectSiege. Je ne sais pas si je m'explique bien.
    Quelqu'un pourrait m'aider ?

  2. #2
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Si j'ai bien compris tu veux récupérer la valeur d'un select?

    Si c'est le cas, je suis pas sur que la façon dont tu le fasses soit bonne. Essaie ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <select onchange="xajax_SelectSiege(this.value, document.getElementById('liste_cat').options[ document.getElementById('liste_cat').selectedIndex].value)">

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    merci de m'avoir répondu. J'ai essayer de votre façon et sa ne marche aps non plus.

    Lorsque je lance ma page et que je choisi dans ma deuxieme liste. Il m'affiche un message qui m'indique:

    Warning: Missing argument 2 for SelectSiege() on line 55. La ligne 55 est celle ci:

    function SelectSiege($souscate, $catid)

    La fonction ne veux pas passer le deuxieme parametre ? Ou alors c'est au moment du onchange qu'il y a un erreur qui fait en sorte que la function SelectSiege ne retrouve pas le deuxieme argument ? P-e que c'est lorsque j'enregistre la fonction SelectSiege ?

  4. #4
    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,
    si tu fermais ton select "liste_cat", il aurait sûrement moins de mal à en récupérer la value

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    j'avais fermer mon select chez moi. C'est surement au faute lors de ma retranscription de script ici. Merci pareil, c'est très apprécier d'avoir de l'aide

    Mais j'ai encore ce problème. Pourquoi ma function SelectSiege prend seulement que mon premier argument et ne vois pas l'autre ?

  6. #6
    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
    Dans la mesure où c'est une erreur JS, le code généré (JS + HTML) serait beaucoup + utile (et efficace quand, comme moi, on connait pas Xajax).

    Nb : s'il te signale une erreur sur SelectSiege() (alors que tu appelles ajax_SelectSiege() ) c'est peut-être un pb d'implémentation de ta librairie, non ?
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je crois avoir réussi a arranger un gros bug. Il ne me sort plus l'erreur comme de quoi il ne trouve pas le deuxieme argument. Dans ma fonction SelectSouscat j'ai ajouter une parti de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $options='&nbsp;Modeles: <select onchange="xajax_SelectSiege(this.value, document.getElementById(\'liste_cat\').value))"><option value="">Choose your model</option>';
    Au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $options='&nbsp;Modeles: <select onchange="xajax_SelectSiege(this.value)"><option value="">Choose your model</option>';

    Le problème maintenant: Il ne me sors aucun résultat; La premier liste apparait, ma deuxieme liste également mais le résultat de <div id='reponse'> ne m'apparait pas. Je ne sais pas si quelqu'un comprend ?

  8. #8
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oups une parenthese de trop

    Tout marche a merveille

    Merci a tous de m'avoir aider

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

Discussions similaires

  1. [AJAX] Formulaire dynamique et datepicker
    Par Mordok dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/06/2012, 21h11
  2. [AJAX] Formulaire dynamique
    Par kikou732 dans le forum AJAX
    Réponses: 0
    Dernier message: 26/12/2011, 23h23
  3. Formulaire dynamique (modifiable par variables)
    Par remus69 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 08/07/2010, 18h14
  4. Récupération de variable d'un formulaire dynamique
    Par The metalhorseman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/02/2007, 12h29
  5. Récupération de variables dynamiques complexes
    Par ludoboy dans le forum ASP
    Réponses: 7
    Dernier message: 24/05/2004, 18h51

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