
<?php
error_reporting(E_ALL);

function ChangeOrder( $tabel, $IDveld, $ID, $richting )
{
	$richting = strtolower( $richting );
	
    $richting = ( $richting == 'omhoog' || $richting == 'omlaag' ) ? $richting : 'omhoog';

	$select_volgorde = "SELECT volgorde FROM {$tabel} WHERE {$IDveld} = {$ID}";
	
	$perform_select  = mysql_query( $select_volgorde)
					   or die('QUERY ERROR: (SELECT_VOLGORDE) <pre>' . $select_volgorde . '</pre>');
	
	$fetch_volgorde  = mysql_fetch_assoc($perform_select);
					   
	$selectMax  = mysql_query("SELECT MAX(volgorde) AS maximaal
							   FROM   {$tabel}
							  ");
	
	$result     = mysql_result( $selectMax, 0 );
	
	if($richting == 'omhoog')
	{
		if( $fetch_volgorde['volgorde'] == $result )
		{
			$return = 'Je kunt niet hoger dan huidige volgorde';
		}
		else
		{
			$update_volgorde = "UPDATE {$tabel} SET volgorde = (volgorde + 1)
								WHERE {$IDveld} = {$ID}
							   ";
			
			$select_vorige   = mysql_query("SELECT volgorde FROM {$tabel}
											WHERE volgorde = ({$fetch_volgorde['volgorde']} + 1)
										   ");
			
			$fetch   		 = mysql_fetch_assoc($select_vorige);

			if($fetch['volgorde'] > 1)
			{
				$update_vorige = mysql_query("UPDATE {$tabel} SET volgorde = {$fetch_volgorde['volgorde']}
											  WHERE volgorde = ({$fetch_volgorde['volgorde']} + 1)
											 ");
			}
			
			$return 		 = 'Volgorde is succesvol gewijzigd.';
			
			$perform_update = mysql_query($update_volgorde)
							  or die('QUERY ERROR: (UPDATE VOLGORDE) <pre>' . $update_volgorde . '</pre>');
		}
	}

	if($richting == 'omlaag')
	{
		if($fetch_volgorde['volgorde'] == 1)
		{
			$return = 'Je kunt niet lager dan huidige volgorde';
		}
		else
		{
			$update_volgorde = "UPDATE {$tabel} SET volgorde = volgorde - 1
								WHERE {$IDveld} = {$ID}
							   ";

			$update_vorige = mysql_query("UPDATE {$tabel} SET volgorde = {$fetch_volgorde['volgorde']}
										  WHERE volgorde = ({$fetch_volgorde['volgorde']} - 1)
										 ");			
			
			$return          = 'Volgorde is succesvol gewijzigd.';
			
			$perform_update = mysql_query($update_volgorde)
							  or die('QUERY ERROR: (UPDATE VOLGORDE) <pre>' . $update_volgorde . '</pre>');
		}
	}				
						
	return $return;
}

// voorbeeld:
echo ChangeOrder( 'forums_categories', 'catID', 1, 'omlaag' ); // zal "Je kunt niet lager dan huidige volgorde" omdat deze waarde 1 heeft

echo ChangeOrder( 'forums_categories', 'catID', 2, 'omlaag' ); // zal "Je kunt niet hoger dan huidige volgorde" omdat deze de hoogste waarde heeft

echo ChangeOrder( 'forums_categories', 'catID', 3, 'omlaag' ); // zal "Volgorde is succesvol gewijzigd." omdat deze waarde niet 1 is of de hoogste waarde heeft

?>
