|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
je récupère des données d'un annuaire ldap que j'affiche sur une page html dans un tableau de cette façon : echo "<table>"; for ($i=0; $i<$result["count"]; $i++) { $nom=$result[$i]["uid"][0]; echo "<tr><td>" . $nom . "</td></tr>"; } echo '<p></table>'; le problème est que le tableau n'a donc qu'une colonne. qu'elle est la solution pour définir le nombre de colonnes ??? d'avance merci |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Le 19/07/2007 19:58, Pascal a écrit :
> > je récupère des données d'un annuaire ldap que j'affiche sur une page html dans un tableau de cette Merci de régler ton Thunderbird de façon à ce qu'il coupe les lignes à moins de 80 colonnes. On conseille souvent 72. Outils > Options > Général > Reformater les messages textes en lignes de 72 caractères. > façon : > > echo "<table>"; Rajouter des sauts de ligne (\n) de temps en temps permet d'aérer un peu le code généré, ce qui aide quand on cherche d'éventuels bugs. > for ($i=0; $i<$result["count"]; $i++) { > $nom=$result[$i]["uid"][0]; > echo "<tr><td>" . $nom . "</td></tr>"; > } > echo '<p></table>'; ^^^ Erreur : ce <p> n'a rien à faire dans une table, et un valideur de code HTML devrait te le dire. > le problème est que le tableau n'a donc qu'une colonne. > qu'elle est la solution pour définir le nombre de colonnes ??? Il suffit de rajouter autant de <td> et </td> que de colonnes. Par exemple, si en plus de "uid" tu as "gid" et "size" : echo "<table>\n"; for ($i = 0; $i < $result["count"]; $i++) { $nom = $result[$i]["uid"][0]; $groupe = $result[$i]["gid"][0]; $taille = $result[$i]["size"][0]; echo "\t<tr>\n" echo "\t\t<td>$nom</td>\n"; echo "\t\t<td>$groupe</td>\n"; echo "\t\t<td>$taille</td>\n"; echo "\t</tr>\n" } echo "</table>\n"; |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
>
> le problème est que le tableau n'a donc qu'une colonne. > qu'elle est la solution pour définir le nombre de colonnes ??? Tu fais une deuxieme boucle à l'interieur de la première |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Le 19/07/2007 19:58, Pascal a écrit :
> > je récupère des données d'un annuaire ldap que j'affiche sur une page html dans un tableau de cette Merci de régler ton Thunderbird de façon à ce qu'il coupe les lignes à moins de 80 colonnes. On conseille souvent 72. Outils > Options > Général > Reformater les messages textes en lignes de 72 caractères. > façon : > > echo "<table>"; Rajouter des sauts de ligne (\n) de temps en temps permet d'aérer un peu le code généré, ce qui aide quand on cherche d'éventuels bugs. > for ($i=0; $i<$result["count"]; $i++) { > $nom=$result[$i]["uid"][0]; > echo "<tr><td>" . $nom . "</td></tr>"; > } > echo '<p></table>'; ^^^ Erreur : ce <p> n'a rien à faire dans une table, et un valideur de code HTML devrait te le dire. > le problème est que le tableau n'a donc qu'une colonne. > qu'elle est la solution pour définir le nombre de colonnes ??? Il suffit de rajouter autant de <td> et </td> que de colonnes. Par exemple, si en plus de "uid" tu as "gid" et "size" : echo "<table>\n"; for ($i = 0; $i < $result["count"]; $i++) { $nom = $result[$i]["uid"][0]; $groupe = $result[$i]["gid"][0]; $taille = $result[$i]["size"][0]; echo "\t<tr>\n" echo "\t\t<td>$nom</td>\n"; echo "\t\t<td>$groupe</td>\n"; echo "\t\t<td>$taille</td>\n"; echo "\t</tr>\n" } echo "</table>\n"; |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Le 19/07/2007 23:54, je répondais à Pascal :
> > Il suffit de rajouter autant de <td> et </td> que de colonnes. > Par exemple, si en plus de "uid" tu as "gid" et "size" : > > echo "<table>\n"; > for ($i = 0; $i < $result["count"]; $i++) { > $nom = $result[$i]["uid"][0]; > $groupe = $result[$i]["gid"][0]; > $taille = $result[$i]["size"][0]; > echo "\t<tr>\n" > echo "\t\t<td>$nom</td>\n"; > echo "\t\t<td>$groupe</td>\n"; > echo "\t\t<td>$taille</td>\n"; > echo "\t</tr>\n" > } > echo "</table>\n"; Et si les colonnes sont $result[$i]["uid"][0], $result[$i]["uid"][1], $result[$i]["uid"][2], etc., alors : echo "<table>\n"; for ($i = 0; $i < $result["count"]; $i++) { echo "\t<tr>\n" foreach ($result[$i]["uid"] as $nom) { echo "\t\t<td>$nom</td>\n"; } echo "\t</tr>\n" } echo "</table>\n"; |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Le 19/07/2007 23:54, je répondais à Pascal :
> > Il suffit de rajouter autant de <td> et </td> que de colonnes. > Par exemple, si en plus de "uid" tu as "gid" et "size" : > > echo "<table>\n"; > for ($i = 0; $i < $result["count"]; $i++) { > $nom = $result[$i]["uid"][0]; > $groupe = $result[$i]["gid"][0]; > $taille = $result[$i]["size"][0]; > echo "\t<tr>\n" > echo "\t\t<td>$nom</td>\n"; > echo "\t\t<td>$groupe</td>\n"; > echo "\t\t<td>$taille</td>\n"; > echo "\t</tr>\n" > } > echo "</table>\n"; Et si les colonnes sont $result[$i]["uid"][0], $result[$i]["uid"][1], $result[$i]["uid"][2], etc., alors : echo "<table>\n"; for ($i = 0; $i < $result["count"]; $i++) { echo "\t<tr>\n" foreach ($result[$i]["uid"] as $nom) { echo "\t\t<td>$nom</td>\n"; } echo "\t</tr>\n" } echo "</table>\n"; |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
> Merci de régler ton Thunderbird de façon à ce qu'il coupe les lignes à
> moins de 80 colonnes. On conseille souvent 72. oui > Erreur : ce <p> n'a rien à faire dans une table, et un valideur de code > HTML devrait te le dire. oui > Il suffit de rajouter autant de <td> et </td> que de colonnes. > Par exemple, si en plus de "uid" tu as "gid" et "size" : ça n'est pas le cas ça n'était pas vraiment ma question : je ne récupère aucune autre entrée que uid, donc lors de ma boucle il met les résultat l'un en dessous de l'autre, or je voudrais que ce résultat soit affiché sur plusieurs colonnes (éventuellement que je puisse choisir le nombre de colonne) merci pour la leçon ;-) |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
> Merci de régler ton Thunderbird de façon à ce qu'il coupe les lignes à
> moins de 80 colonnes. On conseille souvent 72. oui > Erreur : ce <p> n'a rien à faire dans une table, et un valideur de code > HTML devrait te le dire. oui > Il suffit de rajouter autant de <td> et </td> que de colonnes. > Par exemple, si en plus de "uid" tu as "gid" et "size" : ça n'est pas le cas ça n'était pas vraiment ma question : je ne récupère aucune autre entrée que uid, donc lors de ma boucle il met les résultat l'un en dessous de l'autre, or je voudrais que ce résultat soit affiché sur plusieurs colonnes (éventuellement que je puisse choisir le nombre de colonne) merci pour la leçon ;-) |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Le 20/07/2007 11:31, Pascal a écrit :
> > ça n'était pas vraiment ma question : > > je ne récupère aucune autre entrée que uid, donc lors de ma boucle il met les résultat l'un en > dessous de l'autre, or je voudrais que ce résultat soit affiché sur plusieurs colonnes > (éventuellement que je puisse choisir le nombre de colonne) D'accord. Alors voici. $nbcol = 3; /* 3 colonnes pour l'exemple */ echo "<table>\n"; for ($i = 0; $i < $result["count"]; $i++) { $colnum = $i % $nbcol; /* varie de 0 à $nbcol-1 */ if ($colnum == 0) { /* première colonne */ echo "\t<tr>\n" } $nom = $result[$i]["uid"][0]; echo "\t\t<td>$nom</td>\n"; if ($colnum == $nbcol - 1) { /* dernière colonne */ echo "\t</tr>\n" } } if ($colnum != $nbcol - 1) { /* le dernier tr n'est pas encore fermé */ echo "\t</tr>\n" } echo "</table>\n"; À l'endroit du dernier test, si tu veux tu peux rajouter des <td></td>, autant qu'il en manque entre $colnum et $nbcol-1, mais ce n'est pas obligatoire. > merci pour la leçon ;-) De rien ;-) (Mais tes lignes sont toujours trop longues.) |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
Le 20/07/2007 11:31, Pascal a écrit :
> > ça n'était pas vraiment ma question : > > je ne récupère aucune autre entrée que uid, donc lors de ma boucle il met les résultat l'un en > dessous de l'autre, or je voudrais que ce résultat soit affiché sur plusieurs colonnes > (éventuellement que je puisse choisir le nombre de colonne) D'accord. Alors voici. $nbcol = 3; /* 3 colonnes pour l'exemple */ echo "<table>\n"; for ($i = 0; $i < $result["count"]; $i++) { $colnum = $i % $nbcol; /* varie de 0 à $nbcol-1 */ if ($colnum == 0) { /* première colonne */ echo "\t<tr>\n" } $nom = $result[$i]["uid"][0]; echo "\t\t<td>$nom</td>\n"; if ($colnum == $nbcol - 1) { /* dernière colonne */ echo "\t</tr>\n" } } if ($colnum != $nbcol - 1) { /* le dernier tr n'est pas encore fermé */ echo "\t</tr>\n" } echo "</table>\n"; À l'endroit du dernier test, si tu veux tu peux rajouter des <td></td>, autant qu'il en manque entre $colnum et $nbcol-1, mais ce n'est pas obligatoire. > merci pour la leçon ;-) De rien ;-) (Mais tes lignes sont toujours trop longues.) |
|
![]() |
| Outils de la discussion | |
|
|