Boucle while dans ldap
gmartine
-
gmartine -
gmartine -
Bonjour,
j'ai un problème avec ma boucle while dans mon code php . le problème c'est que mon tableau s'affiche bien correctement mais les lignes se génèrent à l'infini. ce qui fait que ma page se charge en permanence.
en sql je sait qu'il faut utiliser mysql fetch array dans la boucle while mais en ldap aucune idée
voici mon code :
<?
// Fichier de configuration pour l'interface PHP
// de notre annuaire LDAP
$server = "ldap.gi.utc";
$ds=ldap_connect($server);
if ($ds) {
$r=ldap_bind($ds);
$dn = "ou=people, dc=gi, dc=utc";
$filtre="(|(ou=$heudiasyc*)(cn=$person*))";
$restriction = array( "cn", "sn", "mail", "title", "telephonenumber", "postofficebox" );
$sr=ldap_search($ds, $dn, $filtre, $restriction);
$nombre = ldap_count_entries($ds, $sr);
print $nombre." enregistrements trouves
";
// echo "Répétion des entré ...";
//echo "<br><br>";
$info = ldap_get_entries($ds, $sr);
// echo "Affichage des donné des ".$info["count"]. " entré trouvé :";
$i = 0;
echo "<table border=0 cellpadding=9>";
echo "<tr bgcolor=#4F707D>";
echo "<td width=200><font color=#FFFFFF>NOM PRENOM</font></td>";
echo "<td width=170><font color=#FFFFFF>FONCTION</font></td>";
echo "<td width=300><font color=#FFFFFF>TELEPHONE</font></td>";
echo "<td width=70><font color=#FFFFFF>EMAIL</font></td>";
echo "<td width=50><font color=#FFFFFF>BUREAU</font></td>";
echo "<tr>";
while($infos)
{
$i = $i + 1;
if ($i%2 == 0) echo '<tr bgcolor = "#FFFFFF">';
else echo '<tr bgcolor = "#eaf1f9">';
echo "<td>". $info[$i]["cn"][0] . "</td>";
echo "<td>". $info[$i]["title"][0] . "</td>";
echo "<td>". $info[$i]["telephonenumber"][0] . "</td>";
for($j=0;$j<$info[$i]["mail"]["count"];$j++) {
echo "<td>". $info[$i]["mail"][$j] ."</td>";
}
echo "<td>". $info[$i]["postofficebox"][0] . "</td>";
echo "</tr>";
}
ldap_close($ds);
echo "</table>";
}
else {
echo "Connexion au serveur LDAP impossible";
}
?>
merci ;)
j'ai un problème avec ma boucle while dans mon code php . le problème c'est que mon tableau s'affiche bien correctement mais les lignes se génèrent à l'infini. ce qui fait que ma page se charge en permanence.
en sql je sait qu'il faut utiliser mysql fetch array dans la boucle while mais en ldap aucune idée
voici mon code :
<?
// Fichier de configuration pour l'interface PHP
// de notre annuaire LDAP
$server = "ldap.gi.utc";
$ds=ldap_connect($server);
if ($ds) {
$r=ldap_bind($ds);
$dn = "ou=people, dc=gi, dc=utc";
$filtre="(|(ou=$heudiasyc*)(cn=$person*))";
$restriction = array( "cn", "sn", "mail", "title", "telephonenumber", "postofficebox" );
$sr=ldap_search($ds, $dn, $filtre, $restriction);
$nombre = ldap_count_entries($ds, $sr);
print $nombre." enregistrements trouves
";
// echo "Répétion des entré ...";
//echo "<br><br>";
$info = ldap_get_entries($ds, $sr);
// echo "Affichage des donné des ".$info["count"]. " entré trouvé :";
$i = 0;
echo "<table border=0 cellpadding=9>";
echo "<tr bgcolor=#4F707D>";
echo "<td width=200><font color=#FFFFFF>NOM PRENOM</font></td>";
echo "<td width=170><font color=#FFFFFF>FONCTION</font></td>";
echo "<td width=300><font color=#FFFFFF>TELEPHONE</font></td>";
echo "<td width=70><font color=#FFFFFF>EMAIL</font></td>";
echo "<td width=50><font color=#FFFFFF>BUREAU</font></td>";
echo "<tr>";
while($infos)
{
$i = $i + 1;
if ($i%2 == 0) echo '<tr bgcolor = "#FFFFFF">';
else echo '<tr bgcolor = "#eaf1f9">';
echo "<td>". $info[$i]["cn"][0] . "</td>";
echo "<td>". $info[$i]["title"][0] . "</td>";
echo "<td>". $info[$i]["telephonenumber"][0] . "</td>";
for($j=0;$j<$info[$i]["mail"]["count"];$j++) {
echo "<td>". $info[$i]["mail"][$j] ."</td>";
}
echo "<td>". $info[$i]["postofficebox"][0] . "</td>";
echo "</tr>";
}
ldap_close($ds);
echo "</table>";
}
else {
echo "Connexion au serveur LDAP impossible";
}
?>
merci ;)
A voir également:
- Boucle while dans ldap
- Client ldap windows - Télécharger - Édition & Programmation
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Application error: a client-side exception has occurred while loading www.leboncoin.fr (see the browser console for more information). - Forum Réseaux sociaux
- Vlc lecture en boucle ✓ - Forum Lecteurs et supports vidéo
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
4 réponses
Bonjour
Ben oui, le problème est ton :
Si tu ne le modifies pas, il garde la même valeur donc la boucle est infinie.
La solution est donc :
Ben oui, le problème est ton :
while($info) {
}
Si tu ne le modifies pas, il garde la même valeur donc la boucle est infinie.
La solution est donc :
$info = ldap_get_entries($ds, $sr);
while($info) {
// Tout ton code
// Puis à la fin
$info = ldap_get_entries($ds, $sr);
}
Bonjour
Il ne faut pas répéter le ldap_get_entries($ds, $sr) dans le while ni dans la boucle, ça n'a rien à voir avec le parcours d'une liste.
Ton programme initial était presque bon, mais la condition while ($info) était mauvaise. En fait, il faut boucler sur toutes les lignes du tableau $info, il fallait donc faire:
while ($i<count($info)-1) // -1 parce que tu incrémentes $i au début de ta boucle
Il ne faut pas répéter le ldap_get_entries($ds, $sr) dans le while ni dans la boucle, ça n'a rien à voir avec le parcours d'une liste.
Ton programme initial était presque bon, mais la condition while ($info) était mauvaise. En fait, il faut boucler sur toutes les lignes du tableau $info, il fallait donc faire:
while ($i<count($info)-1) // -1 parce que tu incrémentes $i au début de ta boucle
ton $info = ldap_get_entries($ds, $sr), il renvoie un tableau non?
Pas besoin de while alors. :)
Pas besoin de while alors. :)
$info = ldap_get_entries($ds, $sr);
$size = length($info)
for($i=0;$i<$size;$i++) {
if ($i%2 == 0) echo '<tr bgcolor = "#FFFFFF">';
else echo '<tr bgcolor = "#eaf1f9">';
echo "<td>". $info[$i]["cn"][0] . "</td>";
echo "<td>". $info[$i]["title"][0] . "</td>";
echo "<td>". $info[$i]["telephonenumber"][0] . "</td>";
for($j=0;$j<$info[$i]["mail"]["count"];$j++) {
echo "<td>". $info[$i]["mail"][$j] ."</td>";
}
echo "<td>". $info[$i]["postofficebox"][0] . "</td>";
echo "</tr>";
}
ldap_close($ds);
echo "</table>";
}
j'ai essayé ce que tu viens de me donner et sa me fait toujours la même chose
$info = ldap_get_entries($ds, $sr);
while($info) {
// Tout ton code
// Puis à la fin
$info = ldap_get_entries($ds, $sr); // cette partie se met bien dans la boucle while? car je l'ai mis dans la boucle while et il se passe rien
}
que mettre dans while(?) ?
merci