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 :

Textarea dynamique par un menu déroulant dynamique


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Par défaut Textarea dynamique par un menu déroulant dynamique
    Bonjour,

    Il y a quelque temps, et grâce à l'aide d'un membre de ce forum réussi a mettre en place et a comprendre un système de double liste déroulante dynamique, la seconde étant dépendante de la première.

    J'ai repris ce code et je souhaite l'adapter pour rendre dynamique le textarea de mon formulaire.
    Malheureusement, je ne suis pas vraiment spécialisé javascript et mon ancien script commence a dater. Je dois admettre que j’ai un peu de mal. Je sens que je touche au but mais je n’arrive pas a l’atteindre.

    Pour faire simple : j'ai un menu déroulant rempli a partir d'une table "produits" de ma DB de forme
    <option value='id du produit'>Catégorie - Titre du produit </option>
    Je souhaite preformater mon textarea avec la description du produit correspondante au choix fait précédemment dans mon menu déroulant.

    J'espère avoir été assez clair.

    Voici mes sources. Si quelqu'un pouvait me mettre sur la voix ce serait sympa

    Afin d'éviter de devoir vous donner un gros paquet de code, sachez que mes includes sont bons et que ma liste déroulante se remplie bien.


    index.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
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
     
    function getXhrTrap(){
    	if(window.XMLHttpRequest) // Firefox et autres
    	   var xhrT = new XMLHttpRequest();
    	else if(window.ActiveXObject){ // Internet Explorer
    	   try {
                    var xhrT = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    var xhrT = new ActiveXObject("Microsoft.XMLHTTP");
                }
    	}
    	else { 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    	   var xhrT = false;
    	}
    	return xhrT;
    }
     
     
     
     
    function getDesc() {
     
    var Id_produit = document.getElementById('id_produit').value;
    var arg = 'Id_produit='+Id_produit;
     
     
    	var xhrT = getXhrTrap();
     
    	xhrT.open("POST","ajaxProduits.php",true);
    	xhrT.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	xhrT.send(arg);
     
    	xhrT.onreadystatechange = function()
    	{	
    		if(xhrT && xhrT.readyState == 4 && xhrT.status == 200 && xhrT.responseXML)
    		{
    			reponseT = xhrT.responseXML.documentElement;
    			var description = reponseT.getElementsByTagName("description");
    			var str = "";
    var rechCount = description.length;
    for(i = 0; i < rechCount; i++)	{
    	str += " - " + description[i].value;
    }
     
    var selbox = document.getElementById("description");
     
    							selbox.value = str; 
     
     
    		}
    	}
    	}
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    $produits_list = "<select class='texte_select' name = 'id_produit' tabindex='3' id= 'id_produit' onchange='getDesc(this.form.id_produit.value);'"; 
     
    while ( $row = mysql_fetch_array( $result_produits)) {
        $Produit_Id = $row["Ref"];
        $Produit_categorie = $row["Categorie"];
    	$Produit_titre = $row["Titre"];
    	$Produit_desc = $row["Description"];
        $produits_list .= "<OPTION value='$Produit_titre'>$Produit_categorie - $Produit_titre</OPTION>";
     
    }
    $produits_list .= "</SELECT>";
     
     
     
    <form method="post" action="index.php?action=add" name="form"> 
    <input type="submit" value="Enregistrer" id="submit" name="submit"  />
    <br/>
     
    Titre :<?php echo $produits_list ?>
    Descriptions : 
    <textarea id="description" name="description" rows="10" cols="72" >
    </textarea>
    </br>
    </form>
    ajaxProduits.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
    <?php
     
    if (isset($_POST["Id_produit"])) {
     
    $buffer = '<div id="desc">';    
    $buffer .= '<?xml version="1.0"?>';
     
    mysql_connect("localhost","xxxxxxxxx","xxxxxxxxxxx");
    mysql_select_db("xxxxxxxxxxxxxx");
    $res = mysql_query("SELECT * FROM Produits WHERE Ref = '".$_POST['Id_produit']."' ");
    while($row = mysql_fetch_assoc($res)){
    $buffer .='<Description id="desc2"><description>'.$row['Description'].'</description></Description>';
    }
    $buffer .='</div>';
    header('Content-Type: text/xml');
            print $buffer;
    }
            ?>


    J'ai essayer pas mal de chose jusqu'à présent, mais soit il n'y a pas eu de changement soit j'avais un retour vide, soit un ""undefined"" soit un "[object HTMLCollection]"

    Merci pour votre temps!

    Bonne journée

  2. #2
    Membre expérimenté Avatar de marts
    Inscrit en
    Février 2008
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 233
    Par défaut
    Dans getDesc() tu devrais définir xhrT.onreadystatechange AVANT xhrT.send(arg).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Par défaut
    Bonjours,

    j'avais oublié le début de mon fichier .js
    La fonction est évidente mais Je ne pense pas que le soucie vienne de la, c'est pour cette raison que je n'ai pas jugé nécessaire de la noter.

    Mon post est a présent mis à jour.

    donc pour le moment, et malgré mes recherches, cela ne fonctionne toujours pas... galère :s

    Merci quand même pour ta réponse c'est sympa!

    Si une autre idée se présente je reste attentif.

    Merci a tous.

  4. #4
    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,
    Citation Envoyé par marts Voir le message
    Dans getDesc() tu devrais définir xhrT.onreadystatechange AVANT xhrT.send(arg).
    Citation Envoyé par carmi Voir le message
    Mon post est a présent mis à jour.
    Ben ... non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    xhrT.send(arg);
     
    xhrT.onreadystatechange = function()
    ...


    A+

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/04/2008, 15h37
  2. Réponses: 10
    Dernier message: 22/03/2007, 08h36
  3. menu déroulant dynamique
    Par jojo971 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/06/2006, 14h43
  4. [Conception] Menu déroulant dynamique et administrable
    Par guy2004 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 16/05/2006, 15h37

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