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 :
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 :
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 :
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.