php - Displaying Rows of HTML Elements in Vertical Rows -
i want show list of categories in virtuemart webshop vertically sorted same way shown in demonstration: http://www.inkplant.com/code/mysql-vertical-sort.php
so borrowed code:
<?php $cols = 4; //number of columns, can set positive integer $values = array(); $result = mysql_query("select * states order name"); $numrows = mysql_num_rows($result); $rows_per_col = ceil($numrows / $cols); ($c=1;$c<=$cols;$c++) { $values['col_'.$c] = array(); } $c = 1; $r = 1; while ($row = mysql_fetch_assoc($result)) { $values['col_'.$c][$r] = stripslashes($row['name']); if ($r == $rows_per_col) { $c++; $r = 1; } else { $r++; } } echo "<table>" ; ($r=1;$r<=$rows_per_col;$r++) { echo "<tr>" ; ($c=1;$c<=$cols;$c++) { echo "<td>".$values['col_'.$c][$r]."</td>" ; } echo "</tr>" ; } echo "</table>" ; unset($values); ?>
i tried modify in virtuemart category template file result:
<?php $cols = 3; //number of columns, can set positive integer $values = array(); $numrows = $precounterdigit; $rows_per_col = ceil($numrows / $cols); ($c=1;$c<=$cols;$c++) { $values['col_'.$c] = array(); } $c = 1; $r = 1; foreach ( $this->category->children $category ) { $catname = $category->category_name; $caturl = jroute::_ ( 'index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $category->virtuemart_category_id ); $values['col_'.$c][$r] = '<div class="category floatleft'.$category_cellwidth.'"> <div class="spacer"><h2> <a href="'.$caturl.'" title="'.$catname.'"> '.$catname.'<br /></a></h2> </div></div>'; if ($r == $rows_per_col) { $c++; $r = 1; } else { $r++; } } echo '<div class="tablediv">' ; ($r=1;$r<=$rows_per_col;$r++) { echo '<div class="row">' ; ($c=1;$c<=$cols;$c++) { echo $values['col_'.$c][$r]; } echo '</div>' ; } echo '</div>' ; unset($values); ?>
it shows in category view if number of categories dividable 3 or dividable 3 -1. meaning shows correctly if there 3, 5, 6, 8, 9, 11, 12 etc... categories on page.
if number of categories equals number dividable 3 +1 shows in weird way..
here example of how shows when there 9 categories:
cat1 | cat4 | cat7
cat2 | cat5 | cat8
cat3 | cat6 | cat9
here example of how shows when there 8 categories:
cat1 | cat4 | cat7
cat2 | cat5 | cat8
cat3 | cat6 |
, here example of how shows when there 7 categories:
cat1 | cat4 | cat7
cat2 | cat5 | cat3
cat6 |
i cannot figure 1 out, hope can me little bit here..
just try this, sure can change cols , rows.
<?php //user210424 $cols = 3; $rows = 3; $j = 0; $array = array("one","two","three","four","five","six","seven","eight","nine"); for($i=1; $i<=$cols; $i++) { echo "<div class='col' style='float:left;'>"; for($j; $j<$rows*$i; $j++) { echo "<div class='row'>".$array[$j]."</div>"; } echo "</div>"; } ?>
Comments
Post a Comment