Avec le post de Yaug et les liens que tu avais trouvé, tu avais presque tout sous la main, il te manquait juste le tuto de Ryle sur l'affichage multi colonne
http://www.phpfrance.com/forums/voir_sujet-241626.php
Voilà donc comment je m'y prendrais :
Je reprendrais le code de Yaug mais au lieu d'essayer d'afficher le résultat directement, j'enregistrerais les résultats non formatés dans un tableau. Au final tu devrais donc avoir un tableau $tab comme dans mon exemple.
Ensuite j'utiliserais ma boucle
http://www.phpfrance.com/forums/voir_re ... php#272576 pour reconstruire le tableau avec les éléments ordonnés de telle sorte qu'un listage simple avec la technique de Ryle (cf tuto mentionné au début) soit suffisante.
Ce qui donne au total :
<?php
header('Content-Type: text/html; charset=UTF-8');
$tab[] = 'A';
$tab[] = 'Alain';
$tab[] = 'Alexandre' ;
$tab[] = 'Arthur';
$tab[] = 'B';
$tab[] = 'Bernard';
$tab[] = 'Bill';
$tab[] = 'Boby' ;
$tab[] = 'C';
$tab[] = 'Catherine';
$tab[] = 'Carinne' ;
$tab[] = 'Caroline';
$tab[] = 'Charles';
$tab[] = 'D';
$tab[] = 'Damien';
$tab[] = 'Didier';
$tab[] = 'Dominique';
$nb_colonne = 3;
$nb_lignes = ceil(count($tab)/$nb_colonne);
for ($i = 0; $i < $nb_lignes ; $i++)
{
$incr = $i;
for($j = 0 ; $j < $nb_colonne ; $j++)
{
if (isset($tab[$incr])){$temp[] = $tab[$incr]; $incr += $nb_lignes;} else $temp[] = null;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Affichage multi-colonnes</title>
</head>
<body>
<table>
<?php
$cpt = 0;
foreach ($temp as $value)
{
// début d'une ligne
if ($cpt%$nb_colonne==0) // on divise le nb d'élément par le nb de colonnes. Si le reste est de 0 ...
echo '<tr>'; // ..., alors on est sur le premier élément d'une ligne
// On place chaque élément dans une cellule du tableau
echo '<td style="padding:0 10px 0 10px">';
echo $value; // affichage de tout ce qu'on veut dans la cellule
echo '</td>';
// fin d'une ligne
if ($cpt%$nb_colonne==($nb_colonne-1)) // on divise le nb d'élément par le nb de colonnes. Si le reste est de ($nbCols-1) ...
echo '</tr>'; // ..., on est sur le dernier élément d'une ligne
$cpt++; // on incrémente le compteur pour savoir où on en est
}
?>
</table>
</body>
</html>
ça peut paraître un peu compliqué mais l'avantage c'est qu'il te suffit de modifier la variable $nb_colonne (ici = 3) pour que l'affichage suive.
Donc il ne te reste plus qu'à utiliser le code de Yaug pour créer un tableau tel que dans mon exemple $tab.
Faut bien que je te laisse bosser un peu
Note : Ne me parle de tes div en float-left, c'est typiquement l'exemple où l'usage des tableaux est recommandé.
Modifié en dernier par
AB le 02 nov. 2010, 17:50, modifié 1 fois.