<?php

# Author : Akif Gümüssu (Aquive Media) - info@aquive.nl
# Contact: info@aquive.nl
# Scriptname: Dynamische kolomen
# Script data: 14-08-2008
# Script version : v1.0
#
# Script om van een array met gegevens een tabel op te bouwen. Het script
# zorgt er voor dat de gegevens verspreid over een aantal kolommen onder elkaar
# worden weergegeven. Het aantal kolomen is zelf op te geven.
#

function makeColums ($inputArray, $columnCount) {

	// Geef aantal kolommen
	$cols = $columnCount;

	// Aantal tellen hoeveel er in de array zit
	$count = count($inputArray);

	// Modulo uitrekenen
	$modulo = $count % $cols;

	// Variabele maken met het aantal te vullen lege cellen in de array
	if ($modulo != 0) {
		$fill = $cols - $modulo;
	} else {
		$fill = 0;
	}

	// Een nbsp maken voor elke cel
	for ($i=0; $i<$fill; $i++) {
		$inputArray[] = '&nbsp';
	}

	// Aantal opnieuw tellen hoeveel er in de array zit
	$count = count($inputArray);

	// Uitrekenen hoeveel rijen er dienen te komen. Door aantal cellen te delen door aantal kolommen
	$rows = $count / $cols;

	// Teller instellen
	$temp = 0;

	// Array met nummers vullen welke van de data array gebuikt moeten worden voor elke regel van de tabel
	for ($i=0; $i<$cols; $i++) {
		$numb[] = $temp;
		$temp = $temp + $rows;
	}

	// Tabel opbouwen
	echo '<table border="1">';

	// Rijen opbouwen
	for ($i=0; $i<$rows; $i++) {
		echo '<tr>';
		// Cellen opbouwen
		for ($j=0; $j<$cols; $j++) {
			echo '<td>' . $inputArray[$numb[$j]] . '</td>';
			$numb[$j] = $numb[$j] + 1;
		}
		echo '</tr>';
	}
	echo '</table>';
}

// Array met gegevens. Dit kan bijvoorbeeld data zijn uit een sql query.
$test = array('Een', 'Twee', 'Drie', 'Vier', 'Vijf', 'Zes', 'Zeven', 'Acht', 'Negen', 'Tien', 'Elf', 'Twaalf', 'Dertien', 'Veertien', 'Vijftien', 'Zestien', 'Zeventien', 'Achtien');

// Functie gebruiken door een array er in te stoppen en het aantal kolommen te kiezen
makeColums($test, 3);

?>