Bonjour,
je voudrais concevoir 2 listes déroulantes liés dont le contenu est des données php mysql la première contient le nom de matière première l'attribut des_mat_pre issu de cette table
#
# Structure de la table `matiere_premiere`
#
CREATE TABLE matiere_premiere (
code_mat_pre int(20) NOT NULL auto_increment,
des_mat_pre varchar(20) NOT NULL default '',
code_four varchar(20) NOT NULL default '',
PRIMARY KEY (code_mat_pre,code_four)
) TYPE=MyISAM;
et la deuxième liste qui va selon la jointure de la clé(code_mat_pre) afficher les type de matière première l'attribut des_typ_mat_pre
#
# Structure de la table `type_matiere_premiere`
#
CREATE TABLE type_matiere_premiere (
code_typ_mat_pre int(20) NOT NULL auto_increment,
des_typ_mat_pre varchar(20) NOT NULL default '',
code_mat_pre varchar(20) NOT NULL default '',
couleur varchar(20) NOT NULL default '',
PRIMARY KEY (code_typ_mat_pre,code_mat_pre)
) TYPE=MyISAM;
donc en effet vu qu'on peut pas appeler par un événement javascript du contenu phpmysql j'ai du me concentrer sur l'ajax pour trouver un script qui le permet et voici le lien ou j'ai trouvé un
[ Lien ]j'ai essayé de l'appliquer le mieux que possible mais c'est seulement le contenu de ma première liste qui s'est affiché
voici mon code pour la première page
<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('typ_mat_pre').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","ajaxtypematierepremiere.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('mat_pre');
code_mat_pre = sel.options[sel.selectedIndex].value;
xhr.send("code_mat_pre="+code_mat_pre);
}
</script>
</head>
<body>
<form action="liste déroulante.php" method="post">
<fieldset style="width: 500px">
<legend>Liste liées</legend>
<label>matiere premiere</label>
<select name='mat_pre' id='mat_pre' onchange='go()'>
<option value='-1'>Aucun</option>
<?
mysql_connect("localhost","root","");
mysql_select_db("art-mania");
$res = mysql_query("SELECT distinct des_mat_pre FROM matiere_premiere ORDER BY des_mat_pre");
while($row = mysql_fetch_assoc($res)){
echo "<option name='des_mat_pre' value='".$row["des_mat_pre"]."'>".$row["des_mat_pre"]."</option>";
}
?>
</select>
<label>type matière première</label>
<div id='des_typ_mat_pre' style='display:inline'>
<select name='typ_mat_pre'>
<option value='-1'>Choisir une matière première</option>
</select>
</div>
</fieldset>
</form>
</body>
</html>
et ma deuxième page ajaxtypematierepremiere.php
<?php
echo "<select name='typ_mat_pre'>";
if(isset($_POST["code_mat_pre"])){
mysql_connect("localhost","root","");
mysql_select_db("art-mania");
$res = mysql_query("SELECT * FROM type_matiere_premiere,matiere_premiere
WHERE type_matiere_premiere.code_mat_pre=".$_POST["code_mat_pre"]." ORDER BY des_typ_mat_pre");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["des_typ_mat_pre"]."'>".$row["des_typ_mat_pre"]."</option>";
}
}
echo "</select>";
?>
donc voila c'est complexe et je conjure votre aide merci :((((((((((((((((


