<?php
session_start();
// connect to the database
    include('connection.php');
	include('includes/header.php');
	
	if (isset($_POST['edituser'])){
//if(count($_POST)>0) {
mysqli_query($conn,"UPDATE user set UserId='" . $_POST['UserId'] . "',
 FirstName='" . $_POST['FirstName'] . "',
 CompanyName='" . $_POST['CompanyName'] . "',
 Email='" . $_POST['Email'] . "' ,
 PhoneNumber='" . $_POST['PhoneNumber'] . "',
 Address='" . $_POST['Address'] . "'
 
 WHERE UserId='" . $_POST['UserId'] . "'");

$message = "Record Modified Successfully";
}
$result = mysqli_query($conn,"SELECT * FROM user 
where UserId ='" . $_SESSION['UserId'] . "' and UserId='" . $_GET['UserId'] . "'");
$row= mysqli_fetch_array($result);


?>



<style>
form {
  margin-right:100px;
  margin:20px 100px 20px 100px;
  border-radius: 15px;
  background-color: #3c42383d;
  padding: 20px 50px 20px 50px;
}
input[type=text], select {
  width: 100%;
  padding: 12px 20px;
  margin: 8px 0;
  display: inline-block;
  border: 1px solid #ccc;
  border-radius: 4px;
  box-sizing: border-box;
}

input[type=submit] {
  width: 50%;
  background-color: #4CAF50;
  color: white;
  padding: 20px;
  margin: 8px 0;
  border: 1px;
  border-radius: 25px;
  cursor: pointer;
  margin-left: 200px;
}
input[type=cancel] {
  margin-left:150px;
  margin-top:5px;
  border-radius: 25px;
  background-color: #3c42383d;
  padding: 20px 50px 20px 50px;
}

input[type=submit]:hover {
  background-color: #45a049;
}
button {
 margin-left:150px;
  margin-top:5px;
  border-radius: 25px;
  background-color: #3c42383d;
  padding: 20px 50px 20px 50px;
}
button:hover {
  background-color: #45a049;
}
form {
  width: 80%;
  border-collapse: collapse;
  margin: 100px auto;
}
.from {
  border-radius: 15px;
  background-color: #3c42383d;
  padding: 50px;
  margin-left: 10px;
}

.page-header{
	border-radius: 20px;
	color: #f9f9f9;
	text-align: center;
	background-color: red;
	width: 100%;
	margin-left: 0%;
	font-weight: bold;
	}

</style>


<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
    <link rel="shortcut icon" type="image/x-icon" href="upload/icon.png">
    <title>User Eidt Profile</title>
</head>
<body>


<hr>
    <div id="page-wrapper"> 
   
      <div class="row">
         
          <div style="font-weight:bold; text-align: center;"  class="alert-info">
				<?php
				if(isset($_SESSION['status']) && $_SESSION !='')
				{
					?>
					<div class="alert alert-warning" role="alert">
					<strong>Hey!</strong><?php echo $_SESSION['status1'];?>
					<button type="button" class="Close" data-dismiss="alert" aria-label="Close">
					<span aria-hidden="true">x</span>
					</button>
					</div>
					<?php
					unset($_SESSION['status']);
				}
				?>

					  
				    <?php
				    if(isset($_GET['msg'])) echo $_GET['msg'];
				    ?>
				</div>
          
        <form  action="User_edit_Action.php" method="post" enctype="multipart/form-data" >
            <h2 class="page-header" >Edit User = <?php echo $row['FirstName']; ?> </h2>

		<label for="fname">User ID</label>
		<input type="hidden" name="UserId" class="txtField" value="<?php echo $row['UserId']; ?>">
		<input type="text" name="UserId"  value="<?php echo $row['UserId']; ?>">

		
		
		<label for="fname">Name</label>
		<input type="text" name="FirstName" value="<?php echo $row['FirstName']; ?>">
	
		<label for="lname">Company Name</label>
		<input type="text" name="CompanyName" class="txtField" value="<?php echo $row['CompanyName']; ?>">
	
		<label for="number_format">Email</label>
		<input type="text" name="Email" class="txtField" value="<?php echo $row['Email']; ?>">
	
		<label for="lname">Phone Number</label>
		<input type="text" name="PhoneNumber" class="txtField" value="<?php echo $row['PhoneNumber']; ?>">
		
	
	
	
		<label for="fname">Address</label>
		<input type="text" name="Address" value="<?php echo $row['Address']; ?>">
			</br>

	

	
							<div class="form-group">
							<h3>Current Photo</h3>
							<img src="userimage/<?php echo $row['UserImage'];?>" height="150" width="150" />
							<input type="hidden" name="previous" value="<?php echo $row['UserImage'];?>"/>
							<h3>New Photo</h3>
							<input type="file" class="form-control" name="UserImage" value="<?php echo $row['UserImage'];?>" />
						</div>


</br>
		  
		  <div class="m-t-20 text-center">
					
					<button class="btn btn-primary submit-btn btn-rounded" type="submit" name="edituser">Update</button>
					<button class="btn btn-primary submit-btn btn-rounded" type="cancel"><a href="userp.php">Cancel</a></button> 
					</div>
		 
        </form>
      </div>
    </div>
  </body>

</html>
<script>
$("#JobTitle").select2( {
	placeholder: "Choose A JobTitle",
	allowClear: true
	} );
</script>