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] Listes liées


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut [AJAX] Listes liées
    Bonjour mon problème est que je voudrais pourvoir sélectionner dans une première liste un processus afin de pouvoir choisir dans une deuxième liste une procédure parmis des procédures liées au processus choisi. J'arrive à remplir la première liste mais pas la seconde...help me, j'ai pris trop de retard et il faut que je passe à autre chose le plus vite possible

    TABLE PROCESSES:

    CREATE
    TABLE PROCESSES (
    IDPROCESS NUMBER NOT NULL,
    HEADING VARCHAR2(45) NULL,
    IDUSER NUMBER NULL
    )
    /

    ALTER TABLE PROCESSES
    ADD CONSTRAINT PROCESSES_PK PRIMARY KEY (
    IDPROCESS
    )
    /

    TABLE PROCEDURES:

    CREATE
    TABLE PROCEDURES (
    IDPROCEDURE NUMBER NOT NULL,
    IDPARENT NUMBER NULL,
    HEADING VARCHAR2(45) NULL,
    SUMMARY VARCHAR2(255) NULL,
    IDUSER NUMBER NULL,
    IDPROCESS NUMBER NULL
    )
    /

    ALTER TABLE PROCEDURES
    ADD CONSTRAINT PROCEDURES_PK PRIMARY KEY (
    IDPROCEDURE
    )
    /

    ALTER TABLE PROCEDURES
    ADD CONSTRAINT FK_PROCEDURES FOREIGN KEY (
    IDPROCESS
    ) REFERENCES PROCEDURES (
    IDPROCEDURE
    )
    /


    J'ai un premier fichier liste_liees.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
    96
    97
    98
    99
    100
    101
    102
    103
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> 
    <html>
    <head>
    <!--  Script de listes deroulantes liees  avec appel  par AJAX, (evite le rechargement de la page) -->
    <script language="Javascript"type="text/JavaScript">
    // Requette AJAX
    function makeRequest(url,id_niveau,id_ecrire)
    {
    	var http_request = false;
    		//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
            if (window.XMLHttpRequest) 
            	{ 
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType)
                {
                    http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml
                }
    			}
    			 else if (window.ActiveXObject)
     			{ 
                try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e)
                    {
                try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
     
            if (!http_request) {
                alert('Abandon :( Impossible de créer une instance XMLHTTP');
                return false;
            }
            http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
    		// lancement de la requete
    		http_request.open('POST', url, true);
    		//changer le type MIME de la requête pour envoyer des données avec la méthode POST ,  !!!! cette ligne doit etre absolument apres http_request.open('POST'....
    		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    		obj=document.getElementById(id_niveau);
    		data="val_sel="+obj.value;
            http_request.send(data);
    }
     
    function traitementReponse(http_request,id_ecrire) {
    var affich="";
    if (http_request.readyState == 4) {
    if (http_request.status == 200) {
    // cas avec reponse de PHP en mode texte:
    //chargement des elements reçus dans la liste
    alert("Reponse PHP: "+http_request.responseText);
    var affich_list=http_request.responseText;
    obj = document.getElementById(id_ecrire); 
    obj.innerHTML = affich_list;
    		} 
    		else {
                    alert('Un probleme est survenu avec la requete.');
            }
        }
    }
    </script>
    </head>
     
    <?php
    // Connexion a la base de donnees  
    include "modules/adodb/adodb.inc.php";
    include "config/config.php";
    // Connexion a la base de donnees  
    $db = NewADOConnection("oci8");
    $cstr = "(DESCRIPTION=(ADDRESS=(PROTOCOL=$PROTOCOL)(HOST=$HOST)(PORT=$PORT))(CONNECT_DATA=(SID=$SID)))";
    $db->Connect($cstr, $USER, $PWD);
    $req = "SELECT heading FROM processes ORDER BY idprocess ASC"; 
    $res=$db->Execute($req);
     
    ?>
      <body>
    	<form name="test1" method="post" action="liste_liees.php">
    		<div id="id_list1">Processus:<br>
    		<select name="pros1" id="id_pros1" onChange="makeRequest('repPhpAjax.php','id_pros1','id_list2')">
    		<option>-- Choisissez --</option>
     
    <?php
                            while ($data=$res->FetchRow())
                            {
    ?>
     
    <option value="<?php echo $data[0]?>"><?php echo $data[0]?></option>
     
    <?php
                            }
    ?>
           </select> 
           <br><br>
           </div>
     
     
    	   <div id="id_list2">
    	   <!-- ici sera charge la reponse mode texte de PHP à la request AJAX -->
    	   </div>
        </form>
      </body>
    </html>

    Et un fichier repAjaxPhp.php qui permet de nourrir la deuxième liste:

    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
    <?php
    // script PHP interrogation Base de donnees pour reponse a la requete AJAX
    include "modules/adodb/adodb.inc.php";
    include "config/config.php";
     
    // Connexion a la base de donnees  
    $db = NewADOConnection("oci8");
    $cstr = "(DESCRIPTION=(ADDRESS=(PROTOCOL=$PROTOCOL)(HOST=$HOST)(PORT=$PORT))(CONNECT_DATA=(SID=$SID)))";
    $db->Connect($cstr, $USER, $PWD);
    $req = "SELECT * FROM procedures WHERE ".$champ_pros."= '".$_POST[val_sel]."' ORDER BY ".$champ_prod." ASC " ;
    $res=$db->Execute($req);
     
    // construction de la liste deroulante" .
    $aff="";
    $aff.="Proc&eacutedure:";
    $aff.="<br>";
    $aff.="<select name='prod1' id='cont_list2' >";
    $aff.="<option>-- Choisissez --</option>";
     
    while ($data=$res->FetchAssoc()) {
    $aff.="<option value=".$data[$champ_prod].">".$data[$champ_prod]."</option>"; 
    		}
    		*/
    $aff.="</select><br><br>";
    // envoi reponse Php a Ajax	
    echo $aff; 
    echo "<br><br>Valeur postee: ".$_POST['val_sel'];
     
    ?>
    MERCI

    CDLT bbk91

  2. #2
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2007
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Hum, ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert("Reponse PHP: "+http_request.responseText);
    il t'affiche quoi?
    Il t'affiche bien ton select et ses options?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    il m'affiche ma ligne de code select dans une fenetre alert mais apres la deuxieme liste de procedure est vide....

    je crois que c'est un pb de requete et de connexion à la BD.

    Aidezzzzzzzzz moi stp

    j'ai pris trop de retard à cause de ça.

    Je reviens demain matin

    bbk91

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    personne pour m'aider?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Août 2006
    Messages : 40
    Points : 43
    Points
    43
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = "SELECT * FROM procedures WHERE ".$champ_pros."= '".$_POST[val_sel]."' ORDER BY ".$champ_prod." ASC " ;
    D'où viennent tes variables $champ_pros et $champ_prod ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    en fait ils viennent du fichier config :

    //$champ_pros="idprocess";
    //$champ_prod="idprocedure";

    mais on peut mettre directement les idprocess(identifiant du processus) et idprocedure(identifiant des procedures).

    Je voudrais pouvoir sélectionner un processus dans une liste qui me donnera une seconde liste de procédures liées au processus sélectionné.

    La première liste fonctionne mais quand je clique dessus,il n' y a rien à part "choisissez" dans la deuxième.

    J'en peu plus, j'ai besoin de savoir comment faire des listes liées....


    Aidez moiiiiiiiiiiiiiiiiiii!


    Merci

  7. #7
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2007
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $aff.="<option value=".$data[$champ_prod].">".$data[$champ_prod]."</option>";
    hum...
    essaie en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $aff.="<option value=".$data["idprocedure"].">".$data["idprocedure"]."</option>";
    Des fois que...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    déja essayé...

    je suis désespéré!

    Merci

Discussions similaires

  1. [AJAX] Listes liées: quelle solution?
    Par Xavier1979 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/05/2007, 09h40
  2. [AJAX] Listes liées
    Par oranocha dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/02/2007, 06h59
  3. [AJAX] listes liées : faire une redirection
    Par _nico42_ dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/10/2006, 13h28
  4. [AJAX] liste liée ajax: s'iou plait, cherchez l'erreur
    Par redwire dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/09/2006, 20h26
  5. [AJAX]Listes liées multiples
    Par Schuss dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 27/06/2006, 16h31

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