Rant: Lors de l'affichage des données tabulaires, utilisez table
au lieu de div
flottant. Cela aura du sens si vous affichez la page avec css désactivé. Si vous utilisez div
flotté, alors vos données seront affichées complètement. Pas tous l'utilisation table
est mauvaise. Les gens détestent tellement table
, donc l'utilisation flottait div
. Table
seulement mauvais lorsqu'il est utilisé pour la mise en page.
Rant: off
Lorsque je dois avoir un certain contenu affiché avec une certaine ouverture, fermeture, et entre caractère supplémentaire, je vais utiliser implode
. C'est l'exemple:
$data = array('column 1', 'column 2');
$output = '<div>'.implode('</div><div>', $data).'</div>';
//result: <div>column 1</div><div>column 2</div>
Vous pouvez l'étendre à presque tout. Array
et implode
est la puissance que PHP a depuis de nombreuses années. Vous n'aurez jamais besoin de if
pour vérifier s'il s'agit du dernier élément, puis insérez le caractère de fermeture, ou vérifiez s'il s'agit du premier élément, puis insérez le caractère d'ouverture ou imprimez le caractère supplémentaire entre les éléments.
Espérons cette aide.
Mise à jour:
Mon mauvais pour mal interprété les principaux problèmes posées. Désolé pour la diatribe;) Voici mon code pour faire une données affichées dans 2 colonnes:
//for example, I use array. This should be a result from database
$data = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
//should be 12 month, but this case there are only 9 of it
for ($i = 0; $i <= 5; $i++)
{
//here I do a half loop, since there a fixed number of data and the item for first column
$output = '<div class="left">'.$data[$i].'</div>';
if (isset($data[$i+6])
{
$output = '<div class="right">'.$data[$i+6].'</div>';
}
echo $output."\n";
}
//the result should be
//<div class="left">1</div><div class="right">7</div>
//<div class="left">2</div><div class="right">8</div>
//<div class="left">3</div><div class="right">9</div>
//<div class="left">4</div>
//<div class="left">5</div>
//<div class="left">6</div>
Autre solution utilise CSS pour formater la sortie, de sorte que vous mettez juste le div
haut en bas, puis le css faites en sorte que le conteneur parent corresponde verticalement à l'élément 6 et placez le reste à droite du contenu existant. Je ne sais pas grand-chose à ce sujet, car il est généralement fourni par un collègue concepteur CSS ou mon client.
Avez-vous besoin des listes séparées triées ou formatées d'une manière ou d'une autre? –
Meh, la foule de séparation de contenu/présentation nous avons tous courir pour utiliser des divs inappropriés. Ce sont des données tabulaires donc utilisez une table. – Mike
De la question qu'il pose, je pense qu'il semble qu'il aurait la même difficulté à créer une table à deux colonnes. –