Reputation: 2536
I am using CodeIgniter to map my database result into divs of two columns
What i am trying to achieve this end result, the db->result may end up with even or odd number of rows. Regardless, it should display the result properly.
<!-- 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 -->
This is what i have done so far, however the result isn't exactly like what i expect it to be.
<?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 -->
Can anyone suggest me to the right direction?
Upvotes: 0
Views: 65
Reputation: 11852
How about this:
//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;
This assumes your database query result is in $services
(You're using both $service
and $services
above.) and it is iterable with a foreach
.
Upvotes: 1