将数据库结果填充为两列的Div

时间:2014-05-12 02:28:47

标签: php html codeigniter

我正在使用CodeIgniter将我的数据库结果映射到两列的div

我试图实现这个最终结果,db->结果可能以偶数或奇数行结束。无论如何,它应该正确显示结果。

<!-- Features -->
  <div class="row">
    <div class="feature col-sm-12 col-md-6 clearfix">
      <h3>Heading 1</h3>
      <p class="small">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
    </div>
    <div class="feature col-sm-12 col-md-6 col-md-offset-0 clearfix">
      <h3>Heading 2</h3>
      <p class="small">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat..</p>
    </div>
  </div><!-- END -->

  <!-- Features -->
  <div class="row">
    <div class="feature last col-sm-12 col-md-6 clearfix">
      <h3>Heading 3</h3>
      <p class="small">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat..</p>
    </div>
    <div class="feature last col-sm-12 col-md-6 col-md-offset-0 clearfix">
      <h3>Heading 4</h3>
      <p class="small">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat..</p>
    </div>
  </div><!-- END -->

这是我到目前为止所做的,但结果并不完全像我期望的那样。

<?php
    $row = array();
    $count = count($services);
    for($x=0; $x<=$count; $x++){
      for($i=0; $i<$count; $i+=2){
        echo '<div class="feature col-sm-12 col-md-6 clearfix">';
        echo '<h3>'.$service[$i]->name.'</h3>';
        echo htmlspecialchars_decode($service[$i]->description);
        echo '</div>';
      }

      for($i=1; $i<$count; $i+=2){
        echo '<div class="feature col-sm-12 col-md-6 col-md-offset-0 clearfix">';
        echo '<h3>'.$service[$i]->name.'</h3>';
        echo htmlspecialchars_decode($service[$i]->description);
        echo '</div>';
      }
    }
  ?><!-- END -->

有人能建议我走向正确的方向吗?

1 个答案:

答案 0 :(得分:1)

这个怎么样:

//Setup some variables
$format = <<<EOF
    <div class="%s">
       <h3>%s</h3>
       <p class="small">%s</p>
    </div>
EOF;
$left_class = 'feature col-sm-12 col-md-6 clearfix';
$right_class = 'feature col-sm-12 col-md-6 col-md-offset-0 clearfix';
$out = '';
$i=0;

//Loop through the results
foreach ($services as $service) {
   $class = $right_class;
   if ($i%2 == 0 ) {
      $out .= "<!-- Features -->\n".'<div class="row">'."\n";
      $class = $left_class;
   }
   $out .= sprintf ( $format, 
                     $class, 
                     $service->name, 
                     htmlspecialchars_decode($service[$i]->description)
                   );
   if ($i%%2 != 0) $out .= "</div><!-- END -->\n\n";
   $i++;
}

//Write the output
echo $out;

这假设您的数据库查询结果位于$services(您同时使用上面的$service$services。)并且可以使用foreach进行迭代。