$num=mysql_num_rows($query);
$ncols=3;
$voci_per_col=ceil($num/$ncols);			
// includo la classe che distribuisce le voci per colonne e righe
include("classes/distrcols.php");
$obj = new distrCols;
$obj->setVars($num,$ncols);
while ($rigo=mysql_fetch_array($query)){
	$obj->createCols("[img]images/default/parancio.gif[/img]","modules.php?name=$module&action=show&c=",$r  igo['Descrizione'],$rigo['Descr'], $rigo['IDCategoria']);
}
dove:
	codice:
	class distrCols{
	var $i; // contatore
	var $per_col; // numero di record per colonna
	var $last; // ultimo record 
	
	function setVars($num,$ncols){
		// argomenti: $num = numero totale di record, $ncols = numero di colonne desiderato
		$i=1;
		$per_col=ceil($num/$ncols);
		$this->i=$i;
		$this->per_col=$per_col;
		$this->last=$num;
	}
	function createCols($img,$params,$text, $text2, $url){
		// $img: inserire il tag [img][/img] se si vuole associare un'immagine alla voce, altrimenti ''
		// $params: eventuali parametri 
		// $text2: ulteriore testo non linkabile
		$img = $img." ";
		if ($this->i==1){
			// può essere il primo, ma anche l'ultimo
			if ($this->i==$this->last){
					$GLOBALS['doc'] .= "
				<table width='100%'>
					<tr>
						<td  align='center'>
							<table cellspacing='1'>
							<tr>
								<td align='left'>$img</td><td align='left'><a href=\"$params$url\">$text</a>$text2</td>
							</tr>
						</table>
					</td>
				</tr>
			</table>
					";
			}
			else{
						$GLOBALS['doc'] .= "
				<table width='100%'>
					<tr>
						<td align='center' valign='top'>
							<table cellspacing='1'>
								<tr>
									<td align='left'>$img</td><td align='left'><a href=\"$params$url\">$text</a>$text2</td>
								</tr>";
				}
		}
		elseif ($this->i%$this->per_col==0){
			if ($this->i==$this->last){ // potrebbe essere essere l'ultimo...
					$GLOBALS['doc'] .= "
							<tr>
								<td align='left'>$img</td><td align='left'><a href=\"$params$url\">$text</a>$text2</td>
							</tr>
						</table>
					</td>
				</tr>
			</table>
					";
			}
			else{
			$GLOBALS['doc'] .= "
					<tr>
						<td align='left'>$img</td><td align='left'><a href=\"$params$url\">$text</a>$text2</td>
					</tr>
				</table>
			</td>
			<td align='center' valign='top'>
				<table cellspacing='1'>
			";
			}
		}
		elseif ($this->i==$this->last){
				$GLOBALS['doc'] .= "
						<tr>
							<td align='left'>$img</td><td align='left'><a href=\"$params$url\">$text</a>$text2</td>
						</tr>
					</table>
				</td>
			</tr>
		</table>
				";
		}
		else {
				$GLOBALS['doc'] .= "
						<tr>
							<td align='left'>$img</td><td align='left'><a href=\"$params$url\">$text</a>$text2</td>
						</tr>
				";
		}
		$this->i++;
	}
}