<?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>Add Project</title>
   <link rel="stylesheet" href="style.css">
   <!-- Select2 CSS --> 
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet" /> 

<!-- jQuery --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> 

<!-- Select2 JS --> 
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>

<meta name="viewport" content="width=device-width, initial-scale=1">
  <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">
	

	
	
	
	
<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;
}
.row {
    margin-left: -40px;
    margin-right: -40px;
}
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: 15px;
  cursor: pointer;
  margin-left: 200px;
}
input[type=reset] {
  margin-left:150px;
  margin-top:5px;
  border-radius: 15px;
  background-color: #3c42383d;
  padding: 10px 50px 10px 50px;
}

input[type=submit]:hover {
  background-color: #45a049;
}
button {
 
  margin-top:5px;
  border-radius: 20px;
  background-color: #3c42383d;
  padding: 20px 20px 20px 20px;
}
button:hover {
  background-color: #45a049;
}
form {
  width: 80%;
  border-collapse: collapse;
  margin: 100px auto;
}

</style>


 
</head>
  <body>
<?php
// connect to the database
    include('connection.php');
	 include('includes/header.php');
?>
  
    <div id="page-wrapper">
	<div class="row">
   
     <form action="Projectsave.php" method="post" enctype="multipart/form-data" >
       
		<h2 class="page-header">Add New Project</h2>
		 <div style="font-weight:bold; text-align: center;"  class="alert-info">
				    <?php
				    if(isset($_GET['msg'])) echo $_GET['msg'];
				    ?>
				</div>
		 <label for="fname">Project Name</label>
    <input type="text" name="ProjectName" required placeholder="Project Name...">
	
	<label for="lname">Contact Name</label>
    <input type="text" name="ContactName" placeholder="Contact Name....">
	
	<label for="number_format">Phone No</label>
    <input type="text" name="PhoneNo" placeholder="Phone No....">

	<label for="Email">Email</label>
    <input type="text" name="Email" placeholder="Email....">

	<label for="lname">SortAddress</label>
    <input type="text" name="SortAddress" placeholder="Address....">


	
	<label for="lname">Address</label>
    <input type="text" name="Address" placeholder="Address....">
	
			<label for="lname">Status:</label>

			<select type="text" name="Status" id="">
				<option value="1">Active</option>
				<option value="0">Inactive</option>
			
			</select>
       
       	<label for="lname">Note</label>
    <input type="text" name="Note" placeholder="Note....">

	
          <h3>Upload File</h3>
          <input type="file" name="myfile">
		  <div class="m-t-20 text-center">
          <button class="btn btn-primary submit-btn btn-rounded" type="submit" name="projectsave">Save</button>
		  <button class="btn btn-primary submit-btn btn-rounded" type="reset" name=""  value="Clear Fields">Clear</button>
		  </div>
        </form>
     
    </div>
    </div>
	
  </body>
</html>
<script>


    $(function() {
		
     $('.notification').tooltip({
        selector: "[data-toggle=tooltip]",
        container: "body"
    })

    });
    </script>

