<?php
require('includes/header.php');

   include('connection.php');
 
?>
<!DOCTYPE html>
<html lang="en" >
<meta charset="utf-8">
<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>Project Profile Edit</title>
	      <link rel="stylesheet" type="text/css" href="assets/css/font-awesome.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/select2.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/dataTables.bootstrap4.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/bootstrap-datetimepicker.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/style1.css">
<?php

	
	if (isset($_POST['editproject'])){
//if(count($_POST)>0) {
mysqli_query($conn,"UPDATE project set Id='" . $_POST['Id'] . "',
 ProjectName='" . $_POST['ProjectName'] . "',
 ContactName='" . $_POST['ContactName'] . "',
 SortAddress='" . $_POST['SortAddress'] . "' ,
 Address='" . $_POST['Address'] . "' ,
 Email='" . $_POST['Email'] . "',
 Note='" . $_POST['Note'] . "',
 PhoneNo='" . $_POST['PhoneNo'] . "'
 WHERE Id='" . $_POST['id'] . "'");
$message = "Record Modified Successfully";
}
$result = mysqli_query($conn,"SELECT * FROM project WHERE id='" . $_GET['Id'] . "'");
$row= mysqli_fetch_array($result);




    

?>


<style>
.page-header{
	border-radius: 20px;
	color: #f9f9f9;
	text-align: center;
	background-color: red;
	width: 100%;
	margin-left: 0%;
	font-weight: bold;
	}
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;
}
.row {
    margin-left: -50px;
    margin-right: -50px;
}

input[type=submit] {
  width: 50%;
  background-color: #4CAF50;
  color: white;
  padding: 20px;
  margin: 8px 0;
  border: 1px;
  border-radius: 15px;
  cursor: pointer;
  margin-left: 200px;
}
input[type=cancel] {
  margin-left:150px;
  margin-top:5px;
  border-radius: 15px;
  background-color: #3c42383d;
  padding: 20px 50px 20px 50px;
}

input[type=submit]:hover {
  background-color: #45a049;
}
button {

  margin-top:5px;
  border-radius: 15px;
  background-color: #3c42383d;
  padding: 20px 50px 20px 50px;
}
button:hover {
  background-color: #45a049;
}
form {
  width: 80%;
  border-collapse: collapse;
  margin: 10px auto;
}

</style>


<body>
<div id="content">
<div class="table-responsive-md">
<div  id="mob" style="margin-top: 40px">

	<div class="row">
        <form action="actionproject.php" method="post" enctype="multipart/form-data" >
		<h2 class="page-header">Update Project Of   "<?php echo $row['ProjectName']; ?>"</h2>

		<label for="fname">ID</label>
		<input type="hidden" name="id" class="txtField" value="<?php echo $row['Id']; ?>">
		<input type="text" name="id"  value="<?php echo $row['Id']; ?>">
		
		 <label for="fname">Project Name</label>
    <input type="text" name="ProjectName" value="<?php echo $row['ProjectName']; ?>">
	
	<label for="lname">Contact Name</label>
  <input type="text" name="ContactName" class="txtField" value="<?php echo $row['ContactName']; ?>">
	
	<label for="number_format">Phone No</label>
    <input type="text" name="PhoneNo" class="txtField" value="<?php echo $row['PhoneNo']; ?>">
	
	<label for="lname">Email</label>
    <input type="text" name="Email" class="txtField" value="<?php echo $row['Email']; ?>">

	<label for="fname">SortAddress</label>
    <input type="text" name="SortAddress" value="<?php echo $row['SortAddress']; ?>">
	
	<label for="fname">Address</label>
    <input type="text" name="Address" value="<?php echo $row['Address']; ?>">
    
    <label for="fname">Note</label>
    <input type="text" name="Note" value="<?php echo $row['Note']; ?>">
    
    
    
    
    <div class="form-group">
							<h3>Current Photo</h3>
							<img src="upload/<?php echo $row['FileName'];?>" height="150" width="150" />
							<input type="hidden" name="previous" value="<?php echo $row['FileName'];?>"/>
							<h3>New Photo</h3>
							<input type="file" class="form-control" name="FileName" value="<?php echo $row['FileName'];?>" />
						</div>
	

<div class="m-t-20 text-center">
          <button class="btn btn-primary submit-btn btn-rounded" type="submit" name="editproject">Update</button>
		  <button class="btn btn-primary submit-btn btn-rounded"><a href="displayproject.php" type="cancel">Cancel</button>
		  </div>
        </form>
      </div>
    </div>
    </div>
    </div>
  </body>

</html>
<script>


    $(function() {
		
     $('.notification').tooltip({
        selector: "[data-toggle=tooltip]",
        container: "body"
    })

    });
    </script>