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

konteriano Messages postés 22 Statut Membre -  
 ixtobilly -
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.
A voir également:

1 réponse

ixtobilly Messages postés 45 Statut Membre 4
 
<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
2
konteriano Messages postés 22 Statut Membre
 
merci beaucoup pour ta réponse, je vais regarder ça et voir si jarrive à le faire avec ma base de données access
0
ixtobilly Messages postés 45 Statut Membre 4 > konteriano Messages postés 22 Statut Membre
 
Tiens j'ai retoruvé la page en question ( https://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
0
baradji Ismaila
 
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
0
ixtobilly
 
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
0