
<?php
session_start();
ob_start();
date_default_timezone_set("Asia/Dhaka");

	include('connection.php');
	if(ISSET($_POST['edituser']))
	{	
		$UserId = $_POST['UserId'];
		$FirstName = $_POST['FirstName'];
		$CompanyName = $_POST['CompanyName'];
		$Email = $_POST['Email'];
	    $PhoneNumber = $_POST['PhoneNumber'];
	    $Address = $_POST['Address'];	
	    $msg=  "USER Update Successfully";
		
		$new_image = $_FILES['UserImage']['name'];
		$old_image = $_POST['previous'];
		
		if($new_image !='')
		{
			$update_filename = $_FILES['UserImage']['name'];
		}
		else
		{
			$update_filename = $old_image;
		}
		if($_FILES['UserImage']['name' !=''])
		{
		if(file_exists("userimage/".$_FILES['UserImage']['name']))
		{
			$UserImage = $_FILES['UserImage']['name'];
			$_SESSION['status'] = " Image already Exists".$UserImage;
			header('Location: userp.php');
		}
		}
		else
		{
			//updating 
			$query = "UPDATE user SET FirstName='$FirstName', CompanyName='$CompanyName', Email='$Email', PhoneNumber='$PhoneNumber', Address='$Address', UserImage='$update_filename' WHERE UserId ='$UserId'";
			$qurey_run = mysqli_query($conn, $query);
			
			if(qurey_run)
			{
				if($_FILES['UserImage']['name'] !='')
				{
					move_uploaded_file($_FILES["UserImage"]["tmp_name"], "userimage/".$_FILES["UserImage"]["name"]);
					unlink("userimage/".$old_image);
				}
				$_SESSION['status'] = " Data Update Successfuly";
				header('Location: userp.php');
			}
			else
			{
				$_SESSION['status'] = " Data Not Update. !";
				header('Location: userp.php');
			}
		}
		
	}
 echo "<script>window.location.href='userp.php';</script>";
    exit;

ob_end_flush();
?>