Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tableau a plusieurs cellucles

5 réponses
Avatar
Pascal
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

5 réponses

Avatar
Thief13

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

Avatar
Olivier Miakinen

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 "tt<td>$nom</td>n";
echo "tt<td>$groupe</td>n";
echo "tt<td>$taille</td>n";
echo "t</tr>n"
}
echo "</table>n";

Avatar
Olivier Miakinen
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 "tt<td>$nom</td>n";
echo "tt<td>$groupe</td>n";
echo "tt<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 "tt<td>$nom</td>n";
}
echo "t</tr>n"
}
echo "</table>n";

Avatar
Pascal
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 ;-)

Avatar
Olivier Miakinen

ç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 "tt<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.)