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 :

Liaison liste deroulante avec BDD [Fait]


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut Liaison liste deroulante avec BDD
    Bonjour,

    Je vous expose mon problème:

    en fait, je n'arrive pas a lié le choix d'une liste déroulante a une autre liste déroulante , les deux etant lié a des données inclus dans une base de données.

    Une fonction me gène et je ne la comprend pas, se qui me bloque un peu.

    la fonction en question:

    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
    	var gs_nth = 0;
    	var gs_timeout = 1600;
    	var gs_select = new Array();
    	var gs_timer = new Array();
    	var gs_stor  = new Array();
     
     
    	function mk_select(nom,options,flag)
    	{
    		if (flag)
    		{
    			document.write('<SELECT id="gs_select_' + gs_nth + '" name="' + nom + '"'
    				+ ' style="width:100%"' + ' onkeydown="return gs_inkey(' + gs_nth
    				+ ')">' + options
    				+ '</SELECT>'
    				);
    			gs_select[gs_nth] = null;
    			gs_timer[gs_nth] = null;
    			gs_stor[gs_nth] = "";
    			++gs_nth;
    		}
    		else
    		{
    			document.write(options);
    		}
    	}
     
     
    	function gs_inkey(nth)
    	{
     
    		if (gs_select[nth]==null)
    		gs_select[nth] = document.getElementById("gs_select_"+nth);
     
    		var key = event.keyCode;
     
    		if (key==32
    		|| (key>=48 && key<=57)
    		|| (key>=65 && key<=90))
    		{
    			if (gs_stor[nth].length<3)
    			{
    				var car = String.fromCharCode(key).toUpperCase();
    				gs_stor[nth]+=car;
    				gs_search(nth);
    			}
    			if (gs_timer[nth]!=null) clearTimeout(gs_timer[nth]);
    			gs_timer[nth] = setTimeout('gs_stor['+nth+']=""',gs_timeout);
    			return false;
    		}
     
    		else
    		return true;
     
    	}
     
     
    	function gs_search(nth)
    	{
    		var mem=[-1,-1,-1];
    		var nb = gs_select[nth].length;
    		for (var ith=0; ith<nb; ++ith)
    		{
    			var label = gs_select[nth][ith].innerHTML.toUpperCase();
    			if (gs_stor[nth].substr(0,1)==label.substr(0,1) && mem[0]==-1) mem[0]=ith;
    			if (gs_stor[nth].substr(0,2)==label.substr(0,2) && mem[1]==-1) mem[1]=ith;
    			if (gs_stor[nth].substr(0,3)==label.substr(0,3) && mem[2]==-1) mem[2]=ith;
    		}
    		if (mem[2]>=0) index=mem[2];
    		else if (mem[1]>=0) index=mem[1];
    		else if (mem[0]>=0) index=mem[0];
    		gs_select[nth].selectedIndex = index;
    	}
    L'apel de la fonction mk_select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          <TD width=150><SPAN class="hide_selection"><SCRIPT language="javascript">mk_select("serv_service[{ligne}]","{serv_service}",1)</SCRIPT></SPAN></TD>
    Jusque la pas de problème , mais lorsque j'essaye de faire intéragir la deuxième box avec la prmière, je me retrouve avec le choix complet des noms, au lieu de n'avoir que ceux qu'il faudrait :s

    appel de la deuxième box

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <TD width=150><SPAN class="hide_selection"><SCRIPT language="javascript">mk_select("serv_nom[{ligne}]","{serv_service}",1)</SCRIPT></SPAN></TD>
    et le lien avec la bdd en 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
     
    	/***  Produire la table des services  ***/
    	$max_numero = dernierNumero($courrier);
    	foreach($courrier["attrib"] as $idx=>$serv)
    	if (!isset($serv["delete"]) && $serv["vu"])
    	{
    		$t->set_var(array(
    			"ligne" => $idx,
    			"serv_service" => $dt->selection("libelle",$liste_services,$serv["service"]),
    			"serv_nom" => $dt->selection("nom",$liste_nom,$serv["service"]),
    			"serv_motif"   => $dt->selection("libelle",$liste_motifs,$serv["motif"]),
    			"serv_observ"  => $serv["observ"],
    			"serv_dest"    => $serv["dest"] ? "checked" : "",
    			"serv_copie"   => $serv["copie"] ? "checked" : "",
    			"serv_date_transmis" => $serv["date_transmis"],
    			"serv_date_retour"   => $serv["date_retour"],
    			"serv_numero" => $serv["numero"],
    			"max_numero"  => $max_numero,
    			));
    		$t->parse("serv_table","services",true);
    	}
    Je suis conscient qu'il y'a beaucoup de code, mais ayant chercher pas mal de temp plusieurs solution dont aucune n'a eté efficace ( meme un tutoriel :s), je m'en remet a vous qui m'avait permis de résoudre mes deux précédents problémes.

    Merci d'avance

    Djillian

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut
    Désolé je l'avait vu mais pas explorer en entier :s:s

    Je vait voir si je peut m'en servir pour l'integrer a l'appli sans trop trop modifier le code de base.

    merci et encore dsl :s

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    Dans le même genre, il y a eu une discussion il y a quelque temps qui porte sur ce sujet ...

    http://www.developpez.net/forums/sho...d.php?t=383649

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut
    Après avoir suivi le cour sur le lien en ajax a la lettre, le fichier test ne fonctionne pas :s

    Comment créer le lien avec une bdd postgres? on remplace bien le mysql_ par pg_ non??

    Escusez moi je suis un peu perdu .

    Fonctionlitbox.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
            echo "<select name='uti_nom'>";
            if(isset($_POST["serv_id"])){
                    pg_connect("http://10.47.16.4/phppgadmin/","reserve","reserve");
                    pg_select_db("courrier_reserve");
                    $res = pg_query("SELECT uti_nom FROM services, serv_util,utilisateurs
                            WHERE services.serv_id=serv_util.jsu_serv_id and serv_util.jsu_uti_id=utilisateurs.uti_id and services.serv_id=".$_POST["serv_id"]."ORDER BY uti_nom";
                    while($row = pg_fetch_assoc($res)){
                            echo "<option value='".$row["uti_nom"]."'</option>";
                    }
            }
            echo "</select>";
    ?>
    test1.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
    <html>
    	<head>
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<script type='text/javascript'>
     
    			function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr;
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			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('uti_id').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","fonctionlitbox.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('auteur');
    				serv_id = sel.options[sel.selectedIndex].value;
    				xhr.send("serv_id="+serv_id);
    			}
    		</script>
    	</head>
     
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<legend>Liste liées</legend>
    				<label>services</label>
    				<select name='services' id='services' onchange='go()'>
    					<option value='-1'>Aucun</option>
    					<?
    						pg_connect(10.47.16.4,"reserve","reserve");
    						pg_select_db("courrier_reserve");
    						$res = pg_query("SELECT * FROM services ORDER BY serv_id");
    						while($row = pg_fetch_assoc($res)){
    							echo "<option value=".$row["serv_id"]."</option>";
    						}
    					?>
    				</select>
    				<label>utilisateurs</label>
    				<div id='utilisateurs' style='display:inline'>
    				<select name='utilisateurs'>
    					<option value='-1'>Choisir un service</option>
    				</select>
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>
    Je n'ai malheureusement aucun coix dans mes box, voyez vous une erreur de syntaxe ou autre, le fichier log de apache ne me renvoi aucune erreur :s

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    là ça ne relève pas du tout de javascript mais plutot de php sgdb ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. alimenter liste deroulante avec champs texte
    Par logone dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 26/05/2006, 11h53
  2. Réponses: 3
    Dernier message: 05/05/2006, 03h05
  3. Zone de liste deroulante avec preselection précise
    Par dynexd dans le forum Access
    Réponses: 7
    Dernier message: 20/02/2006, 17h25
  4. Liste deroulante avec Zone de texte associée
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 26/05/2005, 12h19
  5. liste deroulante avec plusieurs champs
    Par JulienT dans le forum Struts 1
    Réponses: 4
    Dernier message: 20/04/2004, 17h17

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