
<?php
session_start();
ob_start();
date_default_timezone_set("Asia/Dhaka");

	include('connection.php');
	if(ISSET($_POST['editproject']))
	{	
		$id = $_POST['id'];
		$ProjectName = $_POST['ProjectName'];
		$ContactName = $_POST['ContactName'];
		$SortAddress = $_POST['SortAddress'];
	    $Address = $_POST['Address'];
	    $Email = $_POST['Email'];	
	    $Note = $_POST['Note'];
	    $PhoneNo = $_POST['PhoneNo'];
		$msg= "Project Update Successfully";
		$new_image = $_FILES['FileName']['name'];
		$old_image = $_POST['previous'];
		
		if($new_image !='')
		{
			$update_filename = $_FILES['FileName']['name'];
		}
		else
		{
			$update_filename = $old_image;
		}
		if($_FILES['FileName']['name' !=''])
		{
		if(file_exists("upload/".$_FILES['FileName']['name']))
		{
			$FileName = $_FILES['FileName']['name'];
			$_SESSION['status'] = "Image already Exists".$FileName;
			header('Location: displayproject.php');
		}
		}
		else
		{
			//updating 
			$query = "UPDATE project SET ProjectName='$ProjectName', ContactName='$ContactName', SortAddress='$SortAddress', Address='$Address', Email='$Email', Note='$Note', PhoneNo='$PhoneNo', FileName='$update_filename' WHERE Id='$id'";
			$qurey_run = mysqli_query($conn, $query);
			
			if(qurey_run)
			{
				if($_FILES['FileName']['name'] !='')
				{
					move_uploaded_file($_FILES["FileName"]["tmp_name"], "upload/".$_FILES["FileName"]["name"]);
					unlink("upload/".$old_image);
				}
				
				 echo "<script>
                window.location.href='displayproject.php?msg=$msg';</script>";
			}
			else
			{
				$_SESSION['status'] = "Data Not Update. !";
				header('Location: displayproject.php');
			}
		}
		
	}


  
ob_end_flush();
?>