Bonjour. J'ai 2 fichiers .php ---> index.php et liresc.php (ci-dessous) et une base MySQL. Ces 2 fichiers me permettent de créer une liste déroulante et de la remplir grâce aux données présentes dans ma base. De plus une 2ème liste déroulante est crée et dépend de ma 1ère liste. Exemple : Dans ma 1ère liste je clique sur l'activité "Informatique", et dans la 2ème liste s'affiche les métiers liés à cette activité : "Administrateur réseau" / "Commercial informatique" / "Vendeur informatique" . Je voudrai que 2 autres listes déroulantes apparaissent à côté de mes 2 premières. (pour que vous puissiez m'aider on dira que ces listes seront identiques aux 2 premières). J'ai tenté des "copier / coller" tout simplement, malheureusement ça ne doit pas marcher comme ça ... Merci de m'aider. Attention, merci de bien détailler vos réponses car j'ai encore un peu de mal avec la programmation...
Voici mes 2 fichiers (entiers) :
index.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
/**
* Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
*/
function sendData(param, page)
{
if(document.all)
{
//Internet Explorer
var XhrObj = new ActiveXObject("Microsoft.XMLHTTP" ) ;
}//fin if
else
{
//Mozilla
var XhrObj = new XMLHttpRequest();
}//fin else
//définition de l'endroit d'affichage:
var content = document.getElementById("contenu" );
XhrObj.open("POST", page);
//Ok pour la page cible
XhrObj.onreadystatechange = function()
{
if (XhrObj.readyState == 4 && XhrObj.status == 200)
content.innerHTML = XhrObj.responseText ;
}
if (XhrObj.readyState == 4 && XhrObj.status == 200) {
content._innerhtml = XhrObj.responseText ;
alert(XhrObj.responseText);
}
XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send(param);
}//fin fonction SendData
</script>
</head>
<body>
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="ma_base";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible" );
mysql_select_db($database);
// Séléction de tous les enregistrements de la table activite
$rq="Select * from activite;";
$result= mysql_query ($rq) or die ("Select impossible" );
echo "<form method='POST' action='valid.php'>";
?> <select size="1" name="cat" OnChange="sendData('id='+this.value,'liresc.php')" onKeyUp="sendData('id='+this.value,'liresc.php')">
<?php
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégories
echo "<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<br><br>
<div id="contenu">
<?php
// affichage des sous-catégorie appartenant à la première catégorie.
echo "<select size='1' name='souscat'>";
$rq="Select * metier where metier.nummetier=client.nummetier And client.numact=activite.numact=".$j." order by nommetier;";
$result= mysql_query ($rq) or die ("Select impossible" );
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[1])."</option>";
}
echo "</select>";
?>
</div>
</form>
<p> </p>
<br><br>
liresc.php
<?php
header('Content-type: plain/text') ; // on déclare ce qui va être afficher
// test des POST emis
if(isset($_POST['id']) && !empty($_POST['id']) ){
$user="root";
$host="localhost";
$password="";
$database="ma_base";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible" );
mysql_select_db($database);
$rq="SELECT *
FROM `metier` , `client` , `activite`
WHERE `metier`.nummetier = `client`.fk_id_nummetier
AND `client`.fk_id_numact = `activite`.numact
AND `activite`.numact=".$_POST['id']." order by nommetier;";
$res= mysql_query ($rq) or die ("Select impossible" );
// $i = initialise le variable i
$i=0;
if (mysql_num_rows($res)>0)
{
echo "<select size='1' name='souscat'>";
}
else
{
echo utf8_encode("Pas de sous catégories disponible" );
}
while ($dt=mysql_fetch_row($res))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[1])."</option>";
}
echo "</select>";
}
?>