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 :

Liste déroulante Tutoriel Siddh Ajax


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Par défaut Liste déroulante Tutoriel Siddh Ajax
    Salut

    J'ai regardé le tutoriel de Siddth afin de créer deux listes déroulantes liées.


    voici mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form action="" method="post" >
    <p ><label>Pourquoi avez-vous besoin d'un expert-comptable? </label>
        <input type="radio" name="besoin" value='creation'/>Création d'entreprise;
        <input type="radio" name="besoin" value='continuite'/>Reprise d'un dossier;
     
    <input type="button" value="ok" onclick="AfficheForm(this.form.besoin)"  />
    </form>
    Je veux suite au choix effectué afficher en dessous un deuxième formulaire alimenté par une base de donnée, est-ce possible?

    J'ai une table devis(id,type,intitule,contenu) où intitule=creation ou continuite.
    j'ai une fonction qui, selon le type(radio, case,text..) m'affiche mon formulaire.
    Il suffit de lui envoyer une requete sql :
    select * from devis where intitule=this.form.besoin

    Est-ce possible en utilisant la même méthode que pour les listes, et si oui comment?

    merci beaucoup pour votre aide.
    claire

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Par défaut Ajout code
    Bon, je vois que ça n'inspire personne, certainement que je me suis mal exprimé

    Je teste différents code et voici le dernier
    Evidemment ça marche pas encore mais peut-etre que quelqu'un pourra voir mon erreur ou me dire que je me plante totalement!!!!

    code de page devis_ajax:
    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
    function go(){
     var xhr = getXhr();
    // On défini ce qu'on va faire  quand on aura la réponse
    	xhr.onreadystatechange = function(){
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    	if(xhr.readyState == 4 && xhr.status == 200){
    	leselect = xhr.responseText;
    // On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('devis').innerHTML = leselect;
                            alert(leselect);	}
    }
    
    // Ici on va voir comment faire du post
               xhr.open("POST","process_devis_ajax.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    	sel = document.getElementById('types_devis');
    	idType = sel.options[sel.selectedIndex].value;
    	xhr.send("idtype="+idType);}
    </script>
    </head>
    <body>
    <form>
    	<fieldset style="width: 500px">
    	<legend>Formulaire liés</legend>
    		<label>Pages</label>
    	<select name='types_devis' id='types_devis' onchange='go()'>
    	<option value='-1'>Aucun</option>
    <?
    mysql_connect("localhost","root","èç&-éà");
    mysql_select_db("base_test");
    $res = mysql_query("SELECT * FROM types_devis ORDER BY type_devis");
    while($row = mysql_fetch_assoc($res)){
    echo "<option value='".$row["id_type_devis"]."'>".$row["type_devis"]."</option>";
    }
    ?>
    </select>
                    <div id='devis'>
                    <form name='devis'>
    
                    </form>
                    </div>
    </fieldset>
    		</form>
    quand je fais alert(leselect) il n'y a rien!!!

    voici le code de process_devis_ajax.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
    <?php
    include_once'mes_fonctions.php';
    ?>
     
    <?php
    echo "<form name='devis'>";
            if(isset($_POST["idtype"])){
                    mysql_connect("localhost","root","èç&-éà");
                    mysql_select_db("base_test");
                    $res = mysql_query("SELECT * FROM devis
                            WHERE idtype=".$_POST["idtype"]." ORDER BY contenu");
    /*              while($row = mysql_fetch_assoc($res)){
    
    
                $contenu=stripslashes(str_ireplace('é','&eacute',$row["contenu"]));
    
                            echo "<option value='".$row["id"]."'>".$contenu."</option>";
                    }*/
     AfficherFormulaire($res);
     
            }
        echo "</form>";
    ?>
    Ma fonction AfficherFormulaire est juste et normalement il doit s'afficher un formulaire, mais rien ne se passe!

    Help me!!
    ou simplement me dire que je suis à côté de la plaque, que cette solution n'est pas la bonne.
    merci d'avance à celui ou ceux qui voudront bien se pencher sur ce code.

    claire

  3. #3
    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
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var leselect = xhr.responseText;
    car la variable n'est pas déclarée.
    Sinon, est ce que tu récupères bien le formulaire attendu si tu tappes l'url appelée par Ajax (+ paramètres) directement dans la barre d'adresse du nav ?

    A+

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Par défaut
    Bon j'ai un peu avancé, voici la partie de mon code modifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id='devis'>
                    </div>
    dans page devis_ajax.php

    et dans process:

    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
    <?php
     
     
    if(isset($_POST["idtype"])){
            mysql_connect("localhost","root","èç&-éà");
            mysql_select_db("base_test");
            $res = mysql_query("SELECT * FROM devis
                    WHERE idtype=".$_POST["idtype"]." ORDER BY contenu");
     //       $type=$_POST['type'];
                    while($row = mysql_fetch_assoc($res)){
     
     
             $contenu=stripslashes(str_ireplace('é','&eacute',$row["contenu"]));
     
     
    // if($type){
     echo' <label>'.$contenu.'</label>';
    echo '          <input type="text" name="'. $contenu . '">';
     //}
    //  else{echo "problème";};
     
            }
        }
    ?>
    Ca marche.
    Mais j'ai encore un problème:

    Dans ma requête, je sélectionne toutes les colonnes de ma table devis.
    Donc je devrais avoir $_POST['type'].
    Pourtant, quand j'ajoute une condition sur cette variable, ça marche pas.
    Elle n'éxiste pas!!!!

    merci encore

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Par défaut


    j'ai fais une erreur trop bête, au lieu de marquer
    j'avais mis:


    Bon merci et A+

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

Discussions similaires

  1. [AJAX] récupérer la valeur d'une liste déroulante générée en AJAX
    Par nasimpat7 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/12/2008, 00h54
  2. [AJAX] Listes déroulantes liées php+ajax
    Par Sh4dow49 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/07/2008, 15h31
  3. [DOM] Deuxieme liste déroulante liée via ajax, encore inclure ajax?
    Par clara1 dans le forum Général JavaScript
    Réponses: 48
    Dernier message: 16/05/2008, 15h06
  4. [AJAX] Comment rafraîchir une liste déroulante alimentée par ajax
    Par lodan dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/03/2007, 09h01
  5. [AJAX] Listes déroulantes liées avec Ajax
    Par paupiette dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/08/2006, 16h51

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