diff --git a/js/main.js b/js/main.js
index b606f903268fac4089e2fa85ce631f5682370958..8cc5beb5d2bac5e308156d7e7ddba0e044bb88cc 100644
--- a/js/main.js
+++ b/js/main.js
@@ -38,6 +38,11 @@ $(document).ready(function()
 		editRoadmap(this.dataset.id, $('#project-name').val());
 	});
 
+	$('.button-save-milestone').click(function()
+	{
+		editMilestone(this.dataset.id, this.dataset.roadmapid);
+	});
+
 	$('.button-delete-roadmap').click(function()
 	{
 		var r = confirm("Do you really want to delete this roadmap?");
@@ -47,6 +52,39 @@ $(document).ready(function()
 		}
 	});
 
+	$('.button-delete-milestone').click(function()
+	{
+		var r = confirm("Do you really want to delete this milestone?");
+		if(r == true)
+		{
+			deleteMilestone(this.dataset.id, this.dataset.roadmapid);
+		}
+	});
+
+	$('#checkbox-done').click(function()
+	{
+		var checked = document.getElementById("checkbox-done").checked;
+		if(checked)
+		{
+			hideElement(document.getElementById("row-done-date"), false);
+
+			var $input = $('#done-date').pickadate();
+			var picker = $input.pickadate('picker');
+			picker.set('select', new Date());
+		}
+		else
+		{
+			hideElement(document.getElementById("row-done-date"), true);
+		}
+	});
+
+	$('.datepicker').pickadate({
+		selectMonths: true, // Creates a dropdown to control month
+		selectYears: 15, // Creates a dropdown of 15 years to control year
+		format: 'dd.mm.yyyy',
+		formatSubmit: 'yyyy-mm-dd'
+	});
+
 	createTrainMap();
 });
 
@@ -179,4 +217,106 @@ function deleteRoadmap(roadmap_ID)
 				alert('An error occurred while deleting the roadmap with the ID ' + roadmap_ID);
 			}
 		});
+}
+
+function editMilestone(milestone_ID, roadmap_ID)
+{
+	var edit = document.getElementById('edit').innerHTML;
+	var versionCode = $('#version-code').val();
+	var versionName = $('#version-name').val();
+	var title = $('#title').val();
+	var dueDate = $('#due-date').val();
+	var doneDate = $('#done-date').val();
+	var done = document.getElementById("checkbox-done").checked;
+
+	if(isNull(versionCode))
+	{
+		alert("Version Code shouldn't be empty!");
+		return;
+	}
+
+	if(isNull(versionName))
+	{
+		alert("Version Name shouldn't be empty!");
+		return;
+	}
+
+	if(isNull(title))
+	{
+		alert("Title shouldn't be empty!");
+		return;
+	}
+
+	if(isNull(dueDate))
+	{
+		dueDate = "01.01.2001";
+	}
+
+	if(isNull(doneDate))
+	{
+		doneDate = "01.01.2001";
+	}
+
+	if(done)
+	{
+		done = 1;
+	}
+	else
+	{
+		done = 0;
+		doneDate = doneDate = "01.01.2001";
+	}
+
+	$.post('../admin/helper/edit-milestone.php',
+		{
+			"version-code": versionCode,
+			"version-name": versionName,
+			"title": title,
+			"due-date": dueDate,
+			"done-date": doneDate,
+			"done": done,
+			"edit": edit,
+			"ID": milestone_ID,
+			"roadmap-ID": roadmap_ID
+
+		}, function(data, error)
+		{
+			data = data.toString().trim();
+			switch(data)
+			{
+				case "error":
+					alert('An error occurred');
+					break;
+				case "error-edit":
+					alert('An error occurred while editing the roadmap with the ID ' + roadmap_ID);
+					break;
+				case "error-insert":
+					alert('An error occurred while inserting the new milestone');
+					break;
+				default:
+					window.location.href = "../admin/admin-milestones.php?id=" + roadmap_ID;
+					break;
+			}
+		});
+}
+
+function deleteMilestone(milestone_ID, roadmap_ID)
+{
+	$.post('../admin/helper/delete-milestone.php',
+		{
+			"milestone_ID": milestone_ID,
+
+		}, function(data, error)
+		{
+			data = data.toString().trim();
+
+			if(data != "error")
+			{
+				window.location.href = "../admin/admin-milestones.php?id=" + roadmap_ID;
+			}
+			else
+			{
+				alert('An error occurred while deleting the milestone with the ID ' + milestone_ID);
+			}
+		});
 }
\ No newline at end of file
diff --git a/php/admin/admin-edit-milestone.php b/php/admin/admin-edit-milestone.php
new file mode 100644
index 0000000000000000000000000000000000000000..a1abdbcc613454e106375eedbdbfcfcd371e95cb
--- /dev/null
+++ b/php/admin/admin-edit-milestone.php
@@ -0,0 +1,183 @@
+<!DOCTYPE html>
+
+<?php
+include_once('../getLanguageJSON.php');
+include_once('../mysql.php');
+
+
+if(!isset($_GET['roadmapID']))
+{
+	header('Location: ../error.php?message=error_param_missing');
+	exit;
+}
+
+$roadmapID = $_GET['roadmapID'];
+if(!is_numeric($roadmapID) || $roadmapID < 1)
+{
+	header('Location: ../error.php?message=error_param_invalid');
+	exit;
+}
+
+
+if(!isset($_GET['edit']))
+{
+	$_GET['edit'] = "false";
+
+	$_GET['id'] = 0;
+
+	$db = new DB();
+	$db->createTables();
+}
+else
+{
+	if(!isset($_GET['id']))
+	{
+		header('Location: ../error.php?message=error_param_missing');
+		exit;
+	}
+
+	$ID = $_GET['id'];
+	if(!is_numeric($ID) || $ID < 1)
+	{
+		header('Location: ../error.php?message=error_param_invalid');
+		exit;
+	}
+
+	$db = new DB();
+	$db->createTables();
+
+	$milestone = $db->getMilestone($ID);
+	if($milestone == false)
+	{
+		header('Location: ../error.php?message=error_milestone_not_existing');
+		exit;
+	}
+}
+?>
+<html xmlns="http://www.w3.org/1999/html">
+	<head>
+		<meta charset="UTF-8"/>
+		<?php
+		if($_GET['edit'] == "false")
+		{
+			echo '<title>New Milestone</title>';
+		}
+		else
+		{
+			echo '<title>Edit Milestone</title>';
+		}
+		?>
+		<!--Import Google Icon Font-->
+		<link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
+		<!--Import materialize.css-->
+		<link type="text/css" rel="stylesheet" href="../../materialize/css/materialize.min.css" media="screen,projection"/>
+		<link type="text/css" rel="stylesheet" href="../../css/style.css"/>
+
+		<!--Import jQuery before materialize.js-->
+		<script type="text/javascript" src="../../js/jquery-2.2.4.min.js"></script>
+		<script type="text/javascript" src="../../materialize/js/materialize.min.js"></script>
+		<script type="text/javascript" src="../../js/main.js"></script>
+		<script type="text/javascript" src="../../js/ResizeSensor.js"></script>
+		<script type="text/javascript" src="../../js/ElementQueries.js"></script>
+
+		<!--Let browser know website is optimized for mobile-->
+		<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+	</head>
+
+	<body class="grey lighten-3">
+		<div class="hide" id="edit"><?php echo $_GET['edit'];?></div>
+		<div id="main">
+			<div class="container">
+				<?php
+				if($_GET['edit'] == "false")
+				{
+					echo '<h2 class="center-align" id="headline">New Milestone</h2>';
+				}
+				else
+				{
+					echo '<h2 class="center-align" id="headline">Edit Milestone</h2>';
+				}
+				?>
+
+				<div class="row center-align">
+					<div class="col s6 m4 offset-m2 l3 offset-l3">
+						<div class="input-field col s12">
+							<input id="version-code" name="version-code" type="text" value="<?php if(isset($milestone)){echo $milestone["VersionCode"];}?>">
+							<label for="version-code">Version Code</label>
+						</div>
+					</div>
+					<div class="col s6 m4 l3">
+						<div class="input-field col s12">
+							<input id="version-name" name="version-name" type="text" value="<?php if(isset($milestone)){ echo $milestone['VersionName'];}?>">
+							<label for="version-name">Version Name</label>
+						</div>
+					</div>
+				</div>
+				<div class="row center-align">
+					<div class="col s6 m8 offset-m2 l6 offset-l3">
+						<div class="input-field col s12">
+							<input id="title" name="title" type="text" value="<?php if(isset($milestone)){echo $milestone['Title'];}?>">
+							<label for="title">Title</label>
+						</div>
+					</div>
+				</div>
+				<div class="row center-align">
+					<div class="col s6 m8 offset-m2 l6 offset-l3">
+						<div class="col s12 left-align">
+							<label for="due-date" style="font-size: 1rem;">Due Date</label>
+							<input type="date" class="datepicker" id="due-date" data-value="<?php if(isset($milestone)){echo $milestone['DueDate'];}?>">
+						</div>
+					</div>
+				</div>
+				<div class="row center-align">
+					<div class="col s6 m8 offset-m2 l6 offset-l3">
+						<div class="col s12 left-align">
+							<input type="checkbox" id="checkbox-done"
+							<?php
+								if(isset($milestone))
+								{
+									if($milestone['Status'] == "1")
+									{
+										echo "checked";
+									}
+								}
+							?>
+							/>
+							<label for="checkbox-done">Done</label>
+						</div>
+					</div>
+				</div>
+
+				<div class="row center-align
+				<?php
+				if(isset($milestone))
+				{
+					if($milestone['Status'] != "1")
+					{
+						echo "hide";
+					}
+				}
+				else
+				{
+					echo "hide";
+				}
+				?>
+				" id="row-done-date">
+					<div class="col s6 m8 offset-m2 l6 offset-l3">
+						<div class="col s12 left-align">
+							<label for="done-date" style="font-size: 1rem;">Completion Date</label>
+							<input type="date" class="datepicker" id="done-date" data-value="<?php if(isset($milestone)){echo $milestone['CompletionDate'];}?>">
+						</div>
+					</div>
+				</div>
+
+				<div class="row center-align margin-top">
+					<div class="col s12 m8 offset-m2 l6 offset-l3">
+						<a class="waves-effect waves-light btn blue darken-3" href="admin-milestones.php?id=<?php echo $roadmapID ;?>"><i class="material-icons left">arrow_back</i>Back</a>
+						<a class="waves-effect waves-light btn blue darken-3 margin-left button-save-milestone" data-id="<?php echo $ID;?>" data-roadmapid="<?php echo $roadmapID;?>"><i class="material-icons left">save</i>Save</a>
+					</div>
+				</div>
+			</div>
+		</div>
+	</body>
+</html>
\ No newline at end of file
diff --git a/php/admin/admin-edit-roadmap.php b/php/admin/admin-edit-roadmap.php
index 472c7835230721f8dda4cace1a0ce448b5283e3f..d1b10d08e126ed131ee9a9f66970018a491a3e5a 100644
--- a/php/admin/admin-edit-roadmap.php
+++ b/php/admin/admin-edit-roadmap.php
@@ -19,14 +19,14 @@ else
 {
 	if(!isset($_GET['id']))
 	{
-		header('Location: error.php?message=error_param_missing');
+		header('Location: ../error.php?message=error_param_missing');
 		exit;
 	}
 
 	$ID = $_GET['id'];
 	if(!is_numeric($ID) || $ID < 1)
 	{
-		header('Location: error.php?message=error_param_invalid');
+		header('Location: ../error.php?message=error_param_invalid');
 		exit;
 	}
 
@@ -36,14 +36,11 @@ else
 	$projectName = $db->getRoadmap($ID);
 	if($projectName == false)
 	{
-		header('Location: error.php?message=error_roadmap_not_existing');
+		header('Location: ../error.php?message=error_roadmap_not_existing');
 		exit;
 	}
 	$projectName = $projectName["Projectname"];
 }
-
-
-
 ?>
 <html xmlns="http://www.w3.org/1999/html">
 	<head>
diff --git a/php/admin/admin-milestones.php b/php/admin/admin-milestones.php
new file mode 100644
index 0000000000000000000000000000000000000000..f5188bfdda4df7c5e729323815a10b66e8264c03
--- /dev/null
+++ b/php/admin/admin-milestones.php
@@ -0,0 +1,139 @@
+<!DOCTYPE html>
+
+<?php
+include_once('../getLanguageJSON.php');
+include_once('../mysql.php');
+
+if(!isset($_GET['id']))
+{
+	header('Location: ../error.php?message=error_param_missing');
+	exit;
+}
+
+$ID = $_GET['id'];
+if(!is_numeric($ID) || $ID < 1)
+{
+	header('Location: ../error.php?message=error_param_invalid');
+	exit;
+}
+
+$db = new DB();
+$db->createTables();
+
+$projectName = $db->getRoadmap($ID);
+if($projectName == false)
+{
+	header('Location: ../error.php?message=error_roadmap_not_existing');
+	exit;
+}
+$projectName = $projectName["Projectname"];
+
+?>
+<html xmlns="http://www.w3.org/1999/html">
+<head>
+	<meta charset="UTF-8"/>
+	<title>Milestones - Adminarea</title>
+	<!--Import Google Icon Font-->
+	<link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
+	<!--Import materialize.css-->
+	<link type="text/css" rel="stylesheet" href="../../materialize/css/materialize.min.css" media="screen,projection"/>
+	<link type="text/css" rel="stylesheet" href="../../css/style.css"/>
+
+	<!--Import jQuery before materialize.js-->
+	<script type="text/javascript" src="../../js/jquery-2.2.4.min.js"></script>
+	<script type="text/javascript" src="../../materialize/js/materialize.min.js"></script>
+	<script type="text/javascript" src="../../js/main.js"></script>
+	<script type="text/javascript" src="../../js/ResizeSensor.js"></script>
+	<script type="text/javascript" src="../../js/ElementQueries.js"></script>
+
+	<!--Let browser know website is optimized for mobile-->
+	<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+</head>
+
+<body class="grey lighten-3">
+<div id="main">
+	<div class="container">
+		<h2 class="center-align" id="headline"><?php echo $projectName;?></h2>
+		<h4 class="center-align" id="headline">Milestones</h4>
+
+		<div class="row">
+			<div class="col s12 m8 offset-m2 l6 offset-l3 center-align">
+				<a class="waves-effect waves-light btn blue darken-3" href="admin-edit-milestone.php?roadmapID=<?php echo $ID;?>"><i
+						class="material-icons left">add</i>New</a>
+			</div>
+		</div>
+		<div class="row">
+			<div class="col s12 m12 l12">
+				<table class="bordered">
+					<thead>
+					<tr>
+						<th data-field="id">Version Code</th>
+						<th data-field="project-name">Version Name</th>
+						<th data-field="project-name">Title</th>
+						<th data-field="project-name">Due Date</th>
+						<th data-field="project-name">Completion Date</th>
+						<th data-field="project-name">Status</th>
+					</tr>
+					</thead>
+
+					<tbody>
+					<?php
+					$milestones = $db->getMilestones($ID);
+
+					if($milestones == false)
+					{
+						echo '<td colspan="6" class="center-align">No Milestones</td>';
+						exit;
+					}
+					else
+					{
+						for($i = 0; $i < sizeof($milestones); $i++)
+						{
+							$status = $milestones[$i]['Status'];
+							$dueDate = $milestones[$i]['DueDate'];
+							$dueDate = date('d.m.Y', strtotime($dueDate));
+							if($dueDate == "01.01.2001")
+							{
+								$dueDate = "";
+							}
+
+							$doneDate = $milestones[$i]['CompletionDate'];
+							$doneDate = date('d.m.Y', strtotime($doneDate));
+							if($doneDate == "01.01.2001")
+							{
+								$doneDate = "";
+							}
+
+							echo '<tr>' .
+								'<td>' . $milestones[$i]['VersionCode'] . '</td>' .
+								'<td>' . $milestones[$i]['VersionName'] . '</td>' .
+								'<td>' . $milestones[$i]['Title'] . '</td>' .
+								'<td>' . $dueDate . '</td>' .
+								'<td>' . $doneDate . '</td>';
+
+							if($status == "0")
+							{
+								echo '<td><i class="material-icons red-text">build</i></td>';
+							}
+							else
+							{
+								echo '<td><i class="material-icons green-text">check</i></td>';
+							}
+
+							echo '<td class="right-align">' .
+								'<a class="btn-flat no-padding tooltipped" href="admin-edit-milestone.php?id=' . $milestones[$i]['ID'] . '&roadmapID='. $ID .'&edit=true" data-position="bottom" data-delay="50" data-tooltip="Edit"><i class="material-icons left">edit</i></a><br>' .
+								'<a class="btn-flat button-delete-milestone no-padding tooltipped" data-id="' . $milestones[$i]['ID'] . '" data-roadmapid="' . $ID . '" data-position="bottom" data-delay="50" data-tooltip="Delete"><i class="material-icons left">delete</i></a><br>' .
+								'<a class="btn-flat no-padding tooltipped" href="admin-tasks.php?id=' . $milestones[$i]['ID'] . '" data-position="bottom" data-delay="50" data-tooltip="Edit Tasks"><i class="material-icons left">assignment</i></a>' .
+								'</td>' .
+								'</tr>';
+						}
+					}
+					?>
+					</tbody>
+				</table>
+			</div>
+		</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/php/admin/admin-roadmaps.php b/php/admin/admin-roadmaps.php
index f3e37d6deb8105a923b2966a6c70fa55c7adedc0..28173d1e77217df68628ed14b6ee79643c0cf88c 100644
--- a/php/admin/admin-roadmaps.php
+++ b/php/admin/admin-roadmaps.php
@@ -39,7 +39,7 @@ $db->createTables();
 					</div>
 				</div>
 				<div class="row">
-					<div class="col s12 m8 offset-m2 l6 offset-l3">
+					<div class="col s12 m10 offset-m1 l6 offset-l3">
 						<table class="bordered">
 							<thead>
 							<tr>
@@ -54,7 +54,7 @@ $db->createTables();
 
 								if($roadmaps == false)
 								{
-									header('Location: error.php?message=error_database_connection');
+									header('Location: ../error.php?message=error_database_connection');
 									exit;
 								}
 								else
@@ -65,8 +65,9 @@ $db->createTables();
 												'<td>'.$roadmaps[$i]['ID'].'</td>'.
 												'<td>'.$roadmaps[$i]['Projectname'].'</td>'.
 												'<td class="right-align">'.
-													'<a class="btn-flat" href="admin-edit-roadmap.php?id='.$roadmaps[$i]['ID'].'&edit=true"><i class="material-icons left">edit</i></a>'.
-													'<a class="btn-flat button-delete-roadmap" data-id="'.$roadmaps[$i]['ID'].'"><i class="material-icons left">delete</i></a>'.
+													'<a class="btn-flat no-padding tooltipped" href="admin-edit-roadmap.php?id='.$roadmaps[$i]['ID'].'&edit=true" data-position="bottom" data-delay="50" data-tooltip="Rename"><i class="material-icons left">edit</i></a>'.
+													'<a class="btn-flat button-delete-roadmap no-padding tooltipped" data-id="'.$roadmaps[$i]['ID'].'" data-position="bottom" data-delay="50" data-tooltip="Delete"><i class="material-icons left">delete</i></a>'.
+													'<a class="btn-flat no-padding tooltipped" href="admin-milestones.php?id='.$roadmaps[$i]['ID'].'" data-position="bottom" data-delay="50" data-tooltip="Edit Milestones"><i class="material-icons left">assignment</i></a>'.
 												'</td>'.
 											'</tr>';
 									}
diff --git a/php/admin/helper/delete-milestone.php b/php/admin/helper/delete-milestone.php
new file mode 100644
index 0000000000000000000000000000000000000000..bb37078a92bae4bdd7cc3e343f922da21576cf2b
--- /dev/null
+++ b/php/admin/helper/delete-milestone.php
@@ -0,0 +1,30 @@
+<?php
+include_once('../../mysql.php');
+
+if($_SERVER['REQUEST_METHOD'] == 'POST')
+{
+	if(!isset($_POST['milestone_ID']))
+	{
+		echo "error";
+		exit;
+	}
+
+	$db = new DB();
+	$db->createTables();
+
+	if($db->deleteMilestone($_POST['milestone_ID']) == false)
+	{
+		echo "error";
+		exit;
+	}
+	else
+	{
+		echo "success";
+		exit;
+	}
+}
+else
+{
+	echo "error";
+	exit;
+}
\ No newline at end of file
diff --git a/php/admin/helper/delete-roadmap.php b/php/admin/helper/delete-roadmap.php
index 810d5ff58adcd5ddd5cfde9a743c530db6da6c39..c90ae65c4e9409b17d46be05d7d607f3c3808175 100644
--- a/php/admin/helper/delete-roadmap.php
+++ b/php/admin/helper/delete-roadmap.php
@@ -14,7 +14,7 @@ if($_SERVER['REQUEST_METHOD'] == 'POST')
 
 	if($db->deleteRoadmap($_POST['roadmap_ID']) == false)
 	{
-		echo "error2";
+		echo "error";
 		exit;
 	}
 	else
diff --git a/php/admin/helper/edit-milestone.php b/php/admin/helper/edit-milestone.php
new file mode 100644
index 0000000000000000000000000000000000000000..7729f8d3b24d805f9cc715778d8bd61a31c1322f
--- /dev/null
+++ b/php/admin/helper/edit-milestone.php
@@ -0,0 +1,94 @@
+<?php
+include_once('../../mysql.php');
+
+if($_SERVER['REQUEST_METHOD'] == 'POST')
+{
+	if(!isset($_POST['edit']))
+	{
+		echo "error";
+		exit;
+	}
+
+	if(!isset($_POST['ID']))
+	{
+		echo "error-edit";
+		exit;
+	}
+
+	if(!isset($_POST['roadmap-ID']))
+	{
+		echo "error-edit";
+		exit;
+	}
+
+	if(!isset($_POST['version-name']))
+	{
+		echo "error-edit";
+		exit;
+	}
+
+	if(!isset($_POST['version-code']))
+	{
+		echo "error-edit";
+		exit;
+	}
+
+	if(!isset($_POST['title']))
+	{
+		echo "error-edit";
+		exit;
+	}
+
+	if(!isset($_POST['due-date']))
+	{
+		echo "error-edit";
+		exit;
+	}
+
+	if(!isset($_POST['done-date']))
+	{
+		echo "error-edit";
+		exit;
+	}
+
+	if(!isset($_POST['done']))
+	{
+		echo "error-edit";
+		exit;
+	}
+
+	$db = new DB();
+	$db->createTables();
+
+	if($_POST['edit'] == "true")
+	{		
+		if($db->updateMilestone($_POST['ID'], $_POST['version-code'], $_POST['version-name'], $_POST['title'], $_POST['due-date'], $_POST['done-date'], $_POST['done']) == false)
+		{
+			echo "error-edit";
+			exit;
+		}
+		else
+		{
+			echo "success";
+			exit;
+		}
+	}
+	else
+	{
+		if($db->insertMilestone($_POST['roadmap-ID'], $_POST['version-code'], $_POST['version-name'], $_POST['title'], $_POST['due-date'], $_POST['done-date'], $_POST['done']) == false)
+		{
+			echo "error-insert";
+			exit;
+		}
+		else
+		{
+			echo "success";
+			exit;
+		}
+	}
+}
+else
+{
+	echo "error";
+	exit;
+}
\ No newline at end of file
diff --git a/php/language.json b/php/language.json
index 25d2f82359ef0f268366d7166428064ad0cef098..f67de0d55bcac8d69710a86579eee33f3879af08 100644
--- a/php/language.json
+++ b/php/language.json
@@ -6,6 +6,7 @@
   "error_param_missing": "ERROR: parameter missing",
   "error_param_invalid": "ERROR: parameter is not numeric or less than 1",
   "error_roadmap_not_existing": "ERROR: no roadmap with this ID existing",
+  "error_milestone_not_existing": "ERROR: no milestone with this ID existing",
   "error_no_milestones": "ERROR: no milestones for this roadmap",
   "error_database_connection" : "An error occurred while getting data from the server."
 }
\ No newline at end of file
diff --git a/php/mysql.php b/php/mysql.php
index 00ae4bc26ad5b92781a778e6701fb0b5a807519a..566fe0bb9c69f684dcd4b4fbd849768e6a83109c 100644
--- a/php/mysql.php
+++ b/php/mysql.php
@@ -73,11 +73,9 @@ class DB
 		return $statement->execute();
 	}
 
-	function insertMilestone($roadmapID, $versionCode, $versionName, $title, $dueDate)
+	function insertMilestone($roadmapID, $versionCode, $versionName, $title, $dueDate, $completionDate, $status)
 	{
-		$completionDate = "2000-01-01";
-		$status = "0";
-		$statement = self::$db->prepare("INSERT INTO milestones VALUES('', :roadmapID, :versionCode, :versionName, :title, :dueDate, :completionDate, :status);");
+		$statement = self::$db->prepare("INSERT INTO milestones VALUES('', :roadmapID, :versionCode, :versionName, :title, STR_TO_DATE(:dueDate, '%d.%m.%Y'), STR_TO_DATE(:completionDate, '%d.%m.%Y'), :status);");
 		$statement->bindParam("roadmapID", $roadmapID);
 		$statement->bindParam("versionCode", $versionCode);
 		$statement->bindParam("versionName", $versionName);
@@ -154,11 +152,10 @@ class DB
 		return $statement->execute();
 	}
 
-	function updateMilestone($milestoneID, $roadmapID, $versionCode, $versionName, $title, $dueDate, $completionDate, $status)
+	function updateMilestone($milestoneID, $versionCode, $versionName, $title, $dueDate, $completionDate, $status)
 	{
-		$statement = self::$db->prepare("UPDATE milestones SET RoadmapID = :roadmapID, VersionCode = :versionCode, VersionName = :versionName, Title = :title, DueDate = :dueDate, CompletionDate = :completionDate, Status = :status WHERE ID = :milestoneID;");
+		$statement = self::$db->prepare("UPDATE milestones SET VersionCode = :versionCode, VersionName = :versionName, Title = :title, DueDate = STR_TO_DATE(:dueDate, '%d.%m.%Y'), CompletionDate = STR_TO_DATE(:completionDate, '%d.%m.%Y'), Status = :status WHERE ID = :milestoneID;");
 		$statement->bindParam("milestoneID", $milestoneID);
-		$statement->bindParam("roadmapID", $roadmapID);
 		$statement->bindParam("versionCode", $versionCode);
 		$statement->bindParam("versionName", $versionName);
 		$statement->bindParam("title", $title);
@@ -225,6 +222,15 @@ class DB
 		return $statement->fetchAll();
 	}
 
+	function getMilestone($milestoneID)
+	{
+		$statement = self::$db->prepare("SELECT * FROM milestones WHERE milestones.ID=:milestoneID;");
+		$statement->bindParam("milestoneID", $milestoneID);
+		$statement->execute();
+
+		return $statement->fetch();
+	}
+
 	function getNumberOfOpenMilestones($roadmapID)
 	{
 		$statement = self::$db->prepare("SELECT COUNT(*) AS 'count' FROM milestones WHERE milestones.roadmapID=:roadmapID AND status = '0';");