<?php
//require('includes/header.php');

   include('../includes/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['editcontent'])){
//if(count($_POST)>0) {
mysqli_query($conn,"UPDATE content set Id='" . $_POST['Id'] . "',
 Name='" . $_POST['Name'] . "',
 Title='" . $_POST['Title'] . "',
 Description1='" . $_POST['Description1'] . "' ,
 Description2='" . $_POST['Description2'] . "' ,
 ImageSize='" . $_POST['ImageSize'] . "',

 WHERE Id='" . $_POST['Id'] . "'");
$message = "Record Modified Successfully";
}
$result = mysqli_query($conn,"SELECT * FROM content 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="actioncontent.php" method="post" enctype="multipart/form-data" >
		<h2 class="page-header">Update content Of   "<?php echo $row['Name']; ?>"</h2>

		<label for="fname">ID</label>
		<input type="hidden" name="Id" class="txtField" value="<?php echo $row['Id']; ?>">
		
		<label for="fname"><?php echo $row['Id']; ?></label>
		</br></br></br>
		
		 <label for="fname">Name</label>
    <input type="text" name="Name" value="<?php echo $row['Name']; ?>">
	
	<label for="lname">Title</label>
  <input type="text" name="Title" class="txtField" value="<?php echo $row['Title']; ?>">
	
	<label for="number_format">Description1</label>
    <input type="text" name="Description1" class="txtField" value="<?php echo $row['Description1']; ?>">
	
	<label for="lname">Description2</label>
    <input type="text" name="Description2" class="txtField" value="<?php echo $row['Description2']; ?>">

	<label for="fname">ImageSize</label>
	<label for="fname"><?php echo $row['ImageSize']; ?></label>
    </br>
	
	    
    <div class="form-group">
							<h3>Current Photo</h3>
							<img src="upload/<?php echo $row['FileName'];?>" height="300" width="" />
							<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="editcontent">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>