[javascript]listes déroulantes liées par BDD
konteriano
Messages postés
22
Statut
Membre
-
ixtobilly -
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.
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:
- Javascript liste déroulante onchange
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Site dangereux liste - Guide
1 réponse
<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écution
// 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écution
$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
Ps: Fais attention aux guillemets et autres symboles ( ` ) ils peuvent te donner la migraine
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
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