2013-04-20 45 views
0

我想表明我的Virtuemart网店的类别列表,竖向排序相同的方式,显示在此示范: http://www.inkplant.com/code/mysql-vertical-sort.php显示行

所以我借了代码:

<?php 
$cols = 4; //number of columns, you can set this to any positive integer 
$values = array(); 
$result = mysql_query("SELECT * FROM states ORDER BY name"); 
$numrows = mysql_num_rows($result); 
$rows_per_col = ceil($numrows/$cols); 
for ($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>" ; 
for ($r=1;$r<=$rows_per_col;$r++) { 
    echo "<tr>" ; 
    for ($c=1;$c<=$cols;$c++) { echo "<td>".$values['col_'.$c][$r]."</td>" ; } 
    echo "</tr>" ; 
} 
echo "</table>" ; 
unset($values); 
?> 

然后我试着用这个结果来修改它在我的Virtuemart类别的模板文件:

<?php 
$cols = 3; //number of columns, you can set this to any positive integer 
$values = array(); 

$numrows = $precounterdigit; 

$rows_per_col = ceil($numrows/$cols); 
for ($c=1;$c<=$cols;$c++) { $values['col_'.$c] = array(); } 
$c = 1; 
$r = 1; 
foreach ($this->category->children as $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">' ; 
for ($r=1;$r<=$rows_per_col;$r++) { 
    echo '<div class="row">' ; 
    for ($c=1;$c<=$cols;$c++) { echo $values['col_'.$c][$r]; } 
    echo '</div>' ; 
} 
echo '</div>' ; 
unset($values); 
?> 

它真实地反映了完美在类别视图中,如果类别的数量可以被3除或3-1可除。这意味着如果页面上有3,5,6,8,9,11,12等等类别,它就会正确显示。

如果类别的数量等于一个数,它是3 +1然后它示出了在不可思议的方式可分割..

这里是它如何示出了示例,当有9类:

Cat1 | Cat4 | Cat7
Cat2 | Cat5 | Cat8
Cat3 | Cat6 | Cat9

这里是它是如何显示的例子时,有8类:

CAT1 | Cat4 | Cat7
Cat2 | Cat5 | Cat8
Cat3 | Cat6 |


这里是它是如何给出了一个例子时,有7类:

CAT1 | Cat4 | Cat7
Cat2 | Cat5 | Cat3
Cat6 |

我真想不通这一个,所以我希望有人能帮助我一点点在这里..

+0

我认为这是一个CSS问题,你可以显示您的表格div的生成HTML? – Ibu 2013-04-20 02:05:19

+0

你是对的。我发现我的问题可以通过对“row”类进行一些小的css调整来解决。 – GeniusDesign 2013-04-20 03:34:04

回答

2

刚刚尝试这一点,当然,你可以改变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>"; 
} 
?> 
+0

我刚发现我的代码实际上是完美无瑕的。我只需要调整一个小CSS。具体来说我应用宽度:100%;和 display:table;到“行”类。 – GeniusDesign 2013-04-20 03:18:24