Bonjour,

Voilà mon maître d'apprentissage m'a demandé de créer un annuaire téléphonique sous LDAP. Cet annuaire pourra être consulté par tous les employés de l'entreprise via une interface web.
Lorsque l'on recherche une ville par exemple, on génère un tableau avec tous les employés travaillant dans cette ville. Nous pouvons récupérer une dizaine d'information sur chaque employé. Je voulais limiter le nombre d'information à 5 et rajouter un bouton "+" à la fin de chaque ligne. Afin de ne pas surcharger la page.
Lorsque l'on clique sur le bouton '+', il apparaît alors grâce à l'AJAX une zone rectangulaire avec toutes les informations de l'employé. Le problème c'est que lorsque l'on veut les informations de 'employé à la ligne 5 par exemple, ce sont toujours les informations de l'employé à la première ligne qui apparaissent.

Voici les codes sources :

La page HTML :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php include "entete.php"; // on affiche l'entête d'un fichier XHTML ?>
 
<?php
 
		require("ldap_projet.php");
		// $nb_donnees = nb_personne_ldap($ds,$base_dn);
		// $message = "Bonjour, Bienvenue sur les Pages Jaunes d'Intradom.<br/>";
		// echo $message." Il y a actuellement ".$nb_donnees." personne(s) dans l'annuaire d'intradom.";
 
 
$combo=combo();	
/*echo "<pre>";print_r($_POST);echo "</pre>";*/
if (isset($_POST['action'])){
	if ($_POST['action'] == 'ind') {
		define("critere","critere");
		//define("attribut","attribut");
		$critere=$_POST[critere];
		$filtre="";
		//$attribut=$_POST[attribut];
		$filtre.="(&(objectclass=inetorgperson)(|(sn=".$critere."*)(cn=".$critere."*)(givenname=".$critere."*)";
		$filtre.="(telephonenumber=".$critere."*)(internationaliSDNNumber=".$critere."*)(o=".$critere."*)";
		$filtre.="(departmentnumber=".$critere."*)(ou=".$critere."*)(l=".$critere."*)(homephone=".$critere."*)";
		$filtre.="(facsimiletelephonenumber=".$critere."*)(mobile=".$critere."*)))";
		$result=recherchePersonne($ds,$base_dn,$filtre);
		} 
	}
 
?> 
 
	<br/><br/>
	<form id="recherche_employe" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" onsubmit="return RechercheVide();">
 
		<input type="hidden" name="action" value="ind"/><br/>
		<input type="text" name="critere" style="font-family:'Verdana'" size="25" id="champrecherche"/>
		<input type="submit" value="Lancer la recherche"/><br/><br/>
 
	</form>
 
<?php
//if (($ind==1)&&($critere!="")){
// echo $result;	
 
if (isset($_POST['action'])){
	if ($_POST['action'] == 'ind') {
	echo $result;
	}
  }
 
?>
 
	<p class="fiche" id="fiche" style="visibility:hidden; display:none"></p>
	<br style="clear:both"/>
<?php include "fin.php"; // on affiche la fin d'un fichier XHTML ?>
Fonction php de recherche dans l'annuaire LDAP

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function recherchePersonne ($ds,$base_dn,$filtre){
        //fonction de recherche
        //print $filtre;
	$rec=ldap_search($ds,$base_dn,$filtre);  
	//récupération des entrées
	$result = ldap_get_entries($ds,$rec);
	//détermination du nombre d'entrees recuperees
	$num_result=$result["count"];
	//Generation du tableau des entrees	
	$tableau="";
	//$tableau.="Votre requête a retourné ".$num_result." résultat(s)<br>\n";
	$tableau.="<table width=\"50%\ border=\"no\">\n";
	$tableau.="<tr bgcolor=\"#FFFFCE\"><td><b>NOM</b></td><td><b>PRENOM</b></td><td><b>N°POSTE</b></td><td><b>LIGNE DIRECTE</b></td><td><b>VILLE</b></td><td><b>+</b></td></tr>\n";
	for ($i=0; $i<$num_result; $i++) 
	{
 
		$employeenr= $result[$i]["uid"][0];
		$tableau.="<tr bgcolor=\"#EEEEEE\"><td name=\"nomtab\" id=\"nomtab\">".$result[$i]["sn"][0]."</td><td name=\"prenomtab\" id=\"prenomtab\">".$result[$i]["givenname"][0]."</td>";
		$tableau.="<td name=\"numctab\" id=\"numctab\">".$result[$i]["telephonenumber"][0]."</td><td name=\"numltab\" id=\"numltab\">".$result[$i]["internationalisdnnumber"][0]."</td>";	
		$tableau.="<td name=\"lieutab\" id=\"lieutab\">".$result[$i]["l"][0]."</td><td name=\"otab\" id=\"otab\" style=\"visibility:hidden; display:none\">".$result[$i]["o"][0]."</td>";
		$tableau.="<td name=\"dntab\" id=\"dntab\" style=\"visibility:hidden; display:none\">".$result[$i]["departmentnumber"][0]."</td><td name=\"outab\" id=\"outab\" style=\"visibility:hidden; display:none\">".$result[$i]["ou"][0]."</td>";
		$tableau.="<td name=\"mailtab\" id=\"mailtab\" style=\"visibility:hidden; display:none\">".$result[$i]["mail"][0]."</td><td name=\"faxtab\" id=\"faxtab\" style=\"visibility:hidden; display:none\">".$result[$i]["facsimiletelephonenumber"][0]."</td>";
		$tableau.="<td name=\"mobtab\" id=\"mobtab\" style=\"visibility:hidden; display:none\">".$result[$i]["mobile"][0]."</td>";
		//$tableau.="<td name=\"phototab\" id=\"phototab\" ><img height=\"20\" width=\"20\">".$result[$i]["jpegphoto"][0]."</img></td>";
		$tableau.="<td><img src=\"plust.jpg\" alt=\"Plus d'information\" height=\"15\" width=\"15\"/ onclick=\"EnvoiRequete()\" name=\"plus\"/></td></tr>\n";	
	}
	$tableau.="</table>";
	ldap_close($ds);
	return $tableau;
}
Code AJAX

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
function EnvoiRequete() // du fichier helloXMLHttp.js
{
	//Ici on définit les création d"objets selon le navigateur utilisé
	var req_AJAX = null;// Objet XMLHttpRequest qui sera crée
	if (window.XMLHttpRequest) 
	{	 // Mozilla, Safari
		req_AJAX= new XMLHttpRequest(); //création d"un objet de type XMLHttpRequest portant le nom de req_ajax
	}
	else if (typeof ActiveXObject != "undefined")
	{
		req_AJAX= new ActiveXObject("Microsoft.XMLHTTP");
		// note: on peut raffiner pour utiliser // d"autres versions d"IE
	}
	if (req_AJAX) // si l"objet XMLHttpRequest est crée
	{
		req_AJAX.onreadystatechange = function()  //On fait appel à une fonction
		{
		TraiteReponse(req_AJAX); // Si la requête est passé, on fait appel à la fonction traiteréponse avec comme paramètre la requête (req_AJAX)
		};
		// on spécifie l"action que l"on demande au serveur
		req_AJAX.open( "GET", "fiche.php", true); //fonction open avec trois paramètres; GET pour obtenir les informations, 
		//url de la page à lancer et true pour autoriser que l"appel de cette fonction soit asynchrone.
		req_AJAX.send(null); // on envoie la requête
	}
	else
		{ alert("EnvoiRequete: pas de XMLHTTP !"); }
} 	// fin fonction envoiRequete()
 
/************************************************************************/
function TraiteReponse(requete) // appelée à chaque changement d"état
{ // les cinq états d"une requëte AJAX
	var READY_STATE_UNINITIALIZED=0; 
	var READY_STATE_LOADING=1;
	var READY_STATE_LOADED=2; 
	var READY_STATE_INTERACTIVE=3;
	var READY_STATE_COMPLETE=4; 
	var data="";
	var ready = requete.readyState; // récupére l"état de la requëte
 
	if(ready==READY_STATE_LOADING)
	{
		var fiche=document.getElementById('fiche')
		fiche.style.visibility = 'visible';
		fiche.style.display = 'block';
		fiche.style.color = 'red';
		fiche.innerHTML=" En cours de chargement " //indique quand l'image est en train de charger.
	}
 
	else if (ready==READY_STATE_COMPLETE) // si c"est fini
	{
		var fiche = document.getElementById('fiche') // on "pointe" avec DOM dans notre page initiale
 
		nom=document.getElementById('nomtab').innerHTML	
		prenom=document.getElementById('prenomtab').innerHTML
		numcourt=document.getElementById('numctab').innerHTML
		numlong=document.getElementById('numltab').innerHTML
		lieu=document.getElementById('lieutab').innerHTML
		societe=document.getElementById('otab').innerHTML
		dpat=document.getElementById('dntab').innerHTML
		service=document.getElementById('outab').innerHTML
		mail=document.getElementById('mailtab').innerHTML
		fax=document.getElementById('faxtab').innerHTML
		mobile=document.getElementById('mobtab').innerHTML
 
 
		if (requete.status==200) // code = 200 réponse HTTP OK
		{// insere resultat dans document
 
			data = requete.responseText; // on récupére le "travail" du serveur
			fiche.style.visibility = 'visible';
			fiche.style.display = 'block';
			fiche.style.color = 'black';
			fiche.innerHTML = data+'\n\rNom: '+nom+'\n\rPrénom: '+prenom+"\n\rNuméro interne:  "+numcourt+"\n\rNuméro SDA: "+numlong+"\n\rLieu: "+lieu+"\n\rSociété: "+societe+"\n\rDépartement: "+dpat+"\n\rService: "+service+"\n\r@mail: "+mail+"\n\rFax: "+fax+"\n\rMobile: "+mobile //on affiche dans la division "fiche" le message de la page fiche.php
 
		}
		else vide.innerHTML = "erreur serveur: code "+ requete.status;
	}
}// fin function TraiteReponse(requete)
Si vous pouvez m'aider, vos conseils me seraient d'une grande aide. J'ai débuté la programmation web il y a peu de temps. Merci.