Posez votre question Signaler

[javascript]listes déroulantes liées par BDD

konteriano 26Messages postés 10 mai 2007Date d'inscription - Dernière réponse le 17 sept. 2010 à 10:41
Bonjour tous le monde.
Voila je suis en train de développer une application en php permettant une gestion de stock. J'utilise access 2000 comme base de données.
Mon problème, c'est que je souhaite créer des listes déroulantes liées entre elles. Ces listes doivent etre construite dynamiquement les unes en fonctions des autres. j'ai déjà trouvé des exemples sur le net mais avec des listes static.
Ma question est donc est ce que je peux avoir accés à ma base de données à partir du javascript? si oui, comment faut-il faire? sinon y a t'il un autre moyen?
Merci d'avance.
Lire la suite 

[javascript]listes déroulantes liées par BDD »

5 réponses
Réponse
+1
moins plus
<script language="javascript">
// Sert a interroger une base de donne mysql sans envoi direct de donnees vers le serveur
// ceci est utile pour les controle "listbox" dynamique
// Auteur : AMOIKON Georges Wilfrid alias Willy alias ixtobilly( inspiré dun code pris sur le net www.toutjavascript.com)

function request05(f, fichier, elem1, elem2)
{

var l1  = f.elements[elem1];
var l2  = f.elements[elem2];

var index = l1.selectedIndex;
if(index < 1)
   l2.options.length = 0;
else {
   var xhr_object = null;
	
   if(window.XMLHttpRequest) // Firefox
      xhr_object = new XMLHttpRequest();
   else if(window.ActiveXObject) // Internet Explorer
      xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
   else { // XMLHttpRequest non supporté par le navigateur
      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
      return;
   }

   xhr_object.open("POST", fichier, true);
	
   xhr_object.onreadystatechange = function() {
      if(xhr_object.readyState == 4)
         eval(xhr_object.responseText);
		// alert(xhr_object.responseText);
   }

   xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   var data = elem1+"="+escape(l1.options[index].value)+"&form="+f.name+"&select="+elem2;
   xhr_object.send(data);
   // alert(data);
}

}	// fin de la fonction


</script>

 // Dans ta feuille principale :

<form name=form1 action='post'>
<? 

 
  
// initialisation de la requete
$sql = "select CODEDIRECTION, LIBELLEDIRECTION from direction order by  LIBELLEDIRECTION desc"; // permet d'extraire les codes des Direction de ma BD (Mysql)
// mise en ex&eacutecution
// Ne pas oublier les instructions (Toi tu utilises ACCESS dc peut être un peut différent)
 // $liste = $resultat_sql;
 
// exploitation des resultats   
?>
  <select name="direction" id="direction" onChange="request05(this.form,'departement.php','direction','departement');" >
   <option value="" selected="selected"></option>
 <?    if (is_array($liste)) 
	  foreach ($liste as $c => $record)
		echo "<option value=$record[0] selected>$record[1]</option>";
  ?>
 </select> 

<select name="departement" id="departement" >

	</select>

 </form>
 // Fin de ta feuille principale
 
 
 
 
?>


<?php 

// Debut de departement.php
 
// Tu insères dans cette variable ta requête - Elle est à adapter bien sure - 

$query  = "select `CODEPARTEMENT`,`LIBELLEDEPARTEMENT` from `departement` where `CODEDIRECTION` ='".$_POST["direction"]."' order by `LIBELLEDEPARTEMENT` desc"; 

// exploitation des resultats   
echo 'var o = null;';
echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
echo 's.options.length = 1;';

// mise en ex&eacutecution
$liste = $ObjVehicule->selectRecords($query); (selectRecords retourne un fectch array -> le tableau de reponse ki contient les resultats de ta requete - donc a adapter -)

if (is_array($liste)) 
  foreach ($liste as $c => $r)
	echo 's.options[s.options.length] = new Option("'.$r["LIBELLEDEPARTEMENT"].'","'.$r["CODEPARTEMENT"].'");';
	
 $ObjVehicule->closeConnection(); 

 // Fin de departement.php
?> 



Notes : Sql des tables



--
-- Structure de la table `departement`
--

CREATE TABLE departement (
  CODEPARTEMENT int(11) NOT NULL default '0',
  CODEDIRECTION int(11) NOT NULL default '0',
  LIBELLEDEPARTEMENT varchar(50) default NULL,
  PRIMARY KEY  (CODEPARTEMENT)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- 
-- Contenu de la table `departement`
-- 

INSERT INTO departement VALUES (6, 3, 'DRH');
INSERT INTO departement VALUES (5, 3, 'DAP');
INSERT INTO departement VALUES (4, 2, 'CCI');
INSERT INTO departement VALUES (3, 2, 'DE');
INSERT INTO departement VALUES (2, 2, 'DST');
INSERT INTO departement VALUES (1, 2, 'DED');
INSERT INTO departement VALUES (7, 3, 'DCB');
INSERT INTO departement VALUES (8, 1, 'DM');
INSERT INTO departement VALUES (9, 1, 'DECP');
INSERT INTO departement VALUES (10, 1, 'DT');
INSERT INTO departement VALUES (11, 1, 'DEMSP');

-- --------------------------------------------------------

-- 
-- Structure de la table `direction`
-- 

CREATE TABLE direction (
  CODEDIRECTION int(11) NOT NULL default '0',
  LIBELLEDIRECTION varchar(50) default NULL,
  PRIMARY KEY  (CODEDIRECTION)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- 
-- Contenu de la table `direction`
-- 

INSERT INTO direction VALUES (6, 'DR ABENGOUROU');
INSERT INTO direction VALUES (5, 'DR BOUAKE');
INSERT INTO direction VALUES (4, 'DR ABIDJAN');
INSERT INTO direction VALUES (3, 'DAC');
INSERT INTO direction VALUES (2, 'DSI');
INSERT INTO direction VALUES (1, 'DO');
INSERT INTO direction VALUES (7, 'DR KORHOGO');
INSERT INTO direction VALUES (8, 'SJFisc');
INSERT INTO direction VALUES (9, 'SGene');
INSERT INTO direction VALUES (10, 'Conseil');
INSERT INTO direction VALUES (0, 'CtrGen');



Bonne chance
ixtobilly- 10 mai 2007 à 15:44
Tiens j'ai retoruvé la page en question ( http://www.toutjavascript.com/savoir/xmlhttprequest.php3 ) , tu y as aussi toutes les explications.

Ps: Fais attention aux guillemets et autres symboles ( ` ) ils peuvent te donner la migraine
baradji Ismaila - 14 sept. 2010 à 16:36
Salut Wilfried.
C'est Baradji, j'espère que tu ne m'as pas oublié.
je cherche à utiliser aussi ce cas,mais le mien est aussi une liste déroulante avec une base oracle. la sélection d'un élément de cette liste doit modifier des champs affichés depuis une base Postgresql. ton exemple date de 2007 mais je ne sais pas si il existe des nouveaux moyens comme SAJAX et JQUERY.
A bientôt
ixtobilly - 17 sept. 2010 à 10:41
Bonjour Baradji Ismaïlia,

Tu vois que je ne t'ai pas oublié cher étudiant contestataire !!!! Passe le bonjour à tes autres potes. Travailler avec vous a été une expérience très enrichissante !

En fait, tu peux utiliser ce code pour interroger ta base oracle ou postgres.
C'est juste la partie ou tu fais les requêtes vers la base de données qui pourrait changer en fonction du type de base que tu adresses. ça faut voir la syntaxe de php avec ces sgbd.

Surement que tu peux en cherchant un peu sur le net trouver des composants "sajax" ou "...query..." prêt à l'emploi qu'il te faudra juste paramétrer. Si je me souviens, il y en avait (des bouts de code) qui étaient payants à ce temps la, raison pour laquelle j'ai du "mettre la main à la pâte".

Si tu trouves quelque chose, mets le lien sur le site, comme ça, nous pourrons en profiter...

Pour info, je ne développe plus aussi souvent, donc j'arrive à peine à compre ce code que j'ai écrit..... lollll. Un composant à paramétrer sera d'une grande utilité.

Allez bye
Ajouter un commentaire
Ce document intitulé « [javascript]listes déroulantes liées par BDD » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?