时间:2010-01-30 02:31:42

标签: php mysql html css

所以我要做的是从我的数据库中选择所有不同的月份,然后将它们打印在列表中。那,我可以完成。问题在于我需要我的列表是两列。我用CSS实现这一点的方法是使用2个不同的div“left”和“right”,它们彼此相邻。这给PHP带来了一个问题,因为它需要在第六个月回响之后回显一个div关闭和一个新的div打开。然后它需要从它停止的地方再次开始并完成。我不能只列出HTML中的所有月份,要么是因为我不希望它列出一个月,如果我在那个月的数据库中没有任何记录。有任何想法吗?我希望我足够清楚!

谢谢!

-williamg

4 个答案:

答案 0 :(得分:2)

这样的事情应该有用(基本的想法就是在你循环时保持月数的增量):

<div class="left">

<?php
$x = 1;
foreach($months as $month) {

   # switch to the right div on the 7th month
   if ($x == 7) {
      echo '</div><div class="right">';
   }

   echo "<div class=\"row\">{$month}</div>";

   # increment x for each row
   $x++;

}

</div>

答案 1 :(得分:0)

答案 2 :(得分:0)

Rant:on

显示表格数据时,请使用table代替浮动div。在查看禁用css的页面时,这是有意义的。如果您使用浮动div,那么您的数据将全部显示下来。并非所有table用法都不好。人们经常讨厌table,所以使用浮动的divTable仅在用于页面布局时才会出错。

Rant:关闭

当我需要显示某些打开,关闭和中间额外字符的内容时,我会使用implode。这是一个例子:

$data = array('column 1', 'column 2');
$output = '<div>'.implode('</div><div>', $data).'</div>';
//result: <div>column 1</div><div>column 2</div>

您可以将此扩展到几乎任何内容。 Arrayimplode是php多年来的强大功能。你永远不需要任何if来检查它是否是最后一个元素,然后插入结束字符,或者检查它是否是第一个元素,然后插入开始字符,或者在元素之间打印附加字符。

希望得到这个帮助。

<强>更新

我误解了所提出的主要问题。对不起咆哮;) 这是我的代码,用于显示2列中的数据:

//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>

其他解决方案是使用CSS格式化输出,因此您只需将div顶部放下,然后css使父容器仅垂直放入6项,并将其余部分放在现有的右侧内容。我不太了解它,因为它通常由css设计师或我的客户提供。

答案 3 :(得分:0)

示例假设您有一个对象数组。

<div style="width:150px; float:left;">
<ul>
<?php

$c = count($categories);

$s = ($c / 3); // change 3 to the number of columns you want to have.

$i=1;
foreach($categories as $category)
{
    echo '<li>' . $category->CategoryLabel . '</a></li>';
    if($i != 0 && $i % $s == 0)
    {
        ?>
        </ul>
        </div>
        <div style="width:150px; float:left;">
        <ul>
        <?php
    }
    $i++;
}

?>
</ul>
</div>