<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
 <!-- 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>

<style>

.page-header{

	text-align: center;
	background-color: green;
	width: 100%;
	margin-left: 0%;
	
	}
	

	
@media screen and (max-width: 1000px) {
  td.hhh, th.hhh {display:none; }
  .page-header{

	text-align: center;
	background-color: Red;
	width: 100%;
	
	}
  }
  
  @media screen and (max-width: 600px) {
 tbody.ggg, thead.ggg {
    font-size:2.5vw;
  }
}

@media screen and (max-width: 360px) {
  td.kkk, th.kkk {display:none; }
  
	
	}

</style>
</head>
<body>
<?php
 include('includes/header.php');

 ?>
 
 <div id="content">
<div class="table-responsive-md">
<div  id="mob" style="margin-top: 40px">
<button>
<a href="AddProject.php" class="btn btn-lg btn-primary"><i class="fa fa-university "></i>Add New Project</a>
</button>
<button>
<a href="#" style="border-right-width: 8px" class="btn btn-lg btn-primary"><i class="fa fa-university "></i>Add New Button</a>
</button>
<hr>


<div class="page-header"><h1><span class="different-text-color" style="font-weight:bold;">Project List</h1>

<label><h3>search</h3></label>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name">
</div>

<?php
// connect to the database
    include('connection.php');
	

?>


<table id="myTable" class="table table-bordered" style="font-size:1.5vw;" >
	<thead class="ggg">
		<tr>
			<th class="kkk">Id</th>
			<th>ProjectName</th>
			<th  class="hhh">ContactName</th>
			<th>PhoneNo</th>
			<th  class="hhh">Email</th>
			<th  class="hhh">FileImage</th>
			<th class="kkk">Status</th>
			<th colspan="2" align="center">Operation</th>
		</tr>
	</thead>
	<tbody class="ggg">
	
	  <?php $sqli=$conn->query("Select * from project");
        foreach ($sqli as $key => $project) {
  ?>
	
		
		   <td class="kkk"><?php echo $project ['Id']; ?></td>
		   <td><?php echo $project ['ProjectName']; ?></td>
		   <td  class="hhh"><?php echo $project ['ContactName']; ?></td>
		   <td><?php echo $project ['PhoneNo']; ?></td>
		   <td  class="hhh"><?php echo $project ['Email']; ?></td>
		   
		   
		   <td  class="hhh"><img src='upload/<?php echo $project ['FileName']; ?>' height='75' width='100'/>
		  
		   
		   <td class="kkk">
		   <?php 
                    if($project['status']=="1")
  
  {
                        echo '<a href="inactive_project.php?Id='.$project ['Id'].'&ope=0"><button type="button" class="btn btn-primary btn-sm"> Active </button></a>';
  }
                    else
					{
                        echo '<a href="inactive_project.php?Id='.$project ['Id'].'&ope=1"><button type="button" class="btn btn-warning btn-sm">Inactive</button></a>';
					}
                    ?>
					</td>
		   
		   
		   
		   <td><a href="projectedit.php?Id=<?php echo $project["Id"]; ?>"  class="btn btn-primary btn-xs glyphicon glyphicon-edit">Edit</td>
		   <td><a href="displayproject1.php?Id=<?php echo $project["Id"]; ?>"  class="btn btn-primary btn-xs glyphicon glyphicon-eye-open">View</td> 				   				   				  
		   </tr>
		<?php } ?>
	</tbody>
</table>

</div>
</div>
</div>
</body>
</html>


<script>
function myFunction() {
  var input, filter, table, tr, td, i, txtValue;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase();
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");
  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0];
    if (td) {
      txtValue = td.textContent || td.innerText;
      if (txtValue.toUpperCase().indexOf(filter) > -1) {
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    }       
  }
}
</script>
