Discussion:
tableau a plusieurs cellucles
(trop ancien pour répondre)
Pascal
2007-07-19 17:58:39 UTC
Permalink
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
Thief13
2007-07-19 21:54:21 UTC
Permalink
Post by Pascal
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
Olivier Miakinen
2007-07-19 21:54:21 UTC
Permalink
Post by Pascal
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.
Post by Pascal
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.
Post by Pascal
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.
Post by Pascal
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";
Olivier Miakinen
2007-07-19 23:14:00 UTC
Permalink
Post by Olivier Miakinen
Il suffit de rajouter autant de <td> et </td> que de colonnes.
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";
Pascal
2007-07-20 09:31:27 UTC
Permalink
Post by Olivier Miakinen
Merci de régler ton Thunderbird de façon à ce qu'il coupe les lignes à
moins de 80 colonnes. On conseille souvent 72.
oui
Post by Olivier Miakinen
Erreur : ce <p> n'a rien à faire dans une table, et un valideur de code
HTML devrait te le dire.
oui
Post by Olivier Miakinen
Il suffit de rajouter autant de <td> et </td> que de colonnes.
ç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 ;-)
Olivier Miakinen
2007-07-20 09:45:40 UTC
Permalink
Post by Pascal
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.
Post by Pascal
merci pour la leçon ;-)
De rien ;-)
(Mais tes lignes sont toujours trop longues.)

Continuer la lecture sur narkive:
Loading...