as promised, here is what I use, pretty sure you shouldn't need anything else. messy I know but does the job.
I limit the number of categories by 8 in the sql query so if you don't want to just remove.
so to set categories into their columns just set their sort orders, so
sort order 1 = column 1
sort order 2 = column 2 etc
the code obviously doesn't suit all but I got it to do what I needed and so hopefully you can too. :)
enjoy
PHP Code:
<li><a href="#" class="drop">Browse Categories</a><!-- Begin 5 columns Item -->
<div class="dropdown_5columns"><!-- Begin 5 columns container -->
<?php
$categories_tab_query = "SELECT c.categories_id, cd.categories_name, c.sort_order FROM ".TABLE_CATEGORIES." c, ".TABLE_CATEGORIES_DESCRIPTION . " cd WHERE c.categories_id=cd.categories_id AND c.parent_id= '0' AND cd.language_id='" . (int)$_SESSION['languages_id'] . "' AND c.categories_status='1' ORDER BY c.sort_order, cd.categories_name LIMIT 0, 8;";
$categories_tab = $db->Execute($categories_tab_query);
$countthis = 1;
$columnnumber = 0;
echo '<div class="col_1">';
while (!$categories_tab->EOF)
{
$columnnumber = $columnnumber - $categories_tab->fields['sort_order'];
//if ($columnnumber < 0 && countthis == "1") {
//echo '<div class="col_1">';
if ($columnnumber < 0) {
echo '</div><div class="col_1">';
}
if((int)$cPath == $categories_tab->fields['categories_id'])
echo '<h3><a class="topcat" style="font-size:1em;" href="'.zen_href_link(FILENAME_DEFAULT,'cPath=' . (int)$categories_tab->fields['categories_id']).'">' . $categories_tab->fields['categories_name'];
else
echo '<h3><a class="topcat" style="font-size:1em;" href="'.zen_href_link(FILENAME_DEFAULT,'cPath=' . (int)$categories_tab->fields['categories_id']).'">' . $categories_tab->fields['categories_name'];
echo '</a></h3>';
$subcategories_tab_query="SELECT c.categories_id, cd.categories_name FROM ".TABLE_CATEGORIES." c, ".TABLE_CATEGORIES_DESCRIPTION . " cd WHERE c.categories_id=cd.categories_id AND c.parent_id= '".(int)$categories_tab->fields['categories_id']."' AND cd.language_id='" . (int)$_SESSION['languages_id'] . "' AND c.categories_status='1' ORDER BY c.sort_order, cd.categories_name;";
$subcategories_tab=$db->Execute($subcategories_tab_query);
if($subcategories_tab->RecordCount()>0)
{
echo '<ul>';
while (!$subcategories_tab->EOF) {
$cPath_new='cPath=' . $categories_tab->fields['categories_id'] . '_' . $subcategories_tab->fields['categories_id'];
$cPath_new=str_replace('=0_', '=', $cPath_new);
echo '<li>'.'<a class="sub-cat" href="' . zen_href_link(FILENAME_DEFAULT, $cPath_new) . '">'.$subcategories_tab->fields['categories_name'].'</a></li>';
$subcategories_tab->MoveNext();
}
echo '</ul>';
}
$columnnumber = $categories_tab->fields['sort_order'];
$countthis = $countthis + 1;
$categories_tab->MoveNext();
}
?>
</div>
</div><!-- End 5 columns container -->