<?php
require('../includes/header.php');

   
 
?>


<!doctype html>
<html class="no-js" lang="en">


<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <title>TUTORIAL || POWER LINKS CTG</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    <!-- Place favicon.ico in the root directory -->
    <link rel="shortcut icon" type="image/x-icon" href="../images/icon.png">
    <link rel="apple-touch-icon" href="apple-touch-icon.png">
	
	
	

</head>

<body>
    <div class="wrapper">
        <!-- Start Header Style -->
<?php $sqli=$conn->query("Select * from image where Id=15 ");
        foreach ($sqli as $key => $project) {
  ?>
        <!-- End Header Style -->
        <!-- Start Bradcaump area -->
       <div class="ht__bradcaump__area" data--black__overlay="6" style="background: rgba(0, 0, 0, 0) url(../../../power/displayimg/<?php echo $project ['FileName']; ?>) no-repeat scroll center center / cover ;">
            <div class="ht__bradcaump__wrap">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12">
                            <div class="bradcaump__inner text-center">
                                <h2 class="bradcaump-title">Tutorial</h2>
                                <nav class="bradcaump-inner">
                                  <a class="breadcrumb-item" href="index.html">Home</a>
                                  <span class="brd-separetor">-</span>
                                  <span class="breadcrumb-item active">Tutorial</span>
                                </nav>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <?php } ?>
<div id="" class="tab-pane active">
<section class="htc__latest__project__area ptb--150 bg__white">
            <div class="container">
                <div class="row">
                    <div class="htc__latest__project__wrap clearfix">
                        <!-- Start Single Project -->
						
						
                        <div class="col-md-4 col-lg-4 col-sm-6 col-xs-12">
                            <div class="project foo">
                                <div class="project__thumb">
                                    <a href="">
                                        <iframe width="" height="170" src="https://www.youtube.com/embed/e07HFvwU8II" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
                                    </a>
                                    <div class="">
                                        <div class="">
                                            <h2>Kaisar Hossain</h2>
                                            <h4>hi hi hi</h4>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
						
                        <!-- End Single Project -->
						<!-- Start Single Project -->
						
						
                        <div class="col-md-4 col-lg-4 col-sm-6 col-xs-12">
                            <div class="project foo">
                                <div class="project__thumb">
                                    <a href="">
                                        <iframe width="" height="170" src="https://www.youtube.com/embed/MiFXNiSm24Y" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
                                    </a>
                                    <div class="">
                                        <div class="">
                                            <h3>Smart Touch Wifi Wall Panel Gang Switch, Wiring || Smart Touch Switches ll</h3>
                                            <h4>ইলেকট্রিক স্মার্ট সুইচ বোর্ড কানেকশন  ও ফিটিং বাংলা ভিডিও। আশাকরি আপনাদের এই ভিডিওটি অনেক উপকার করবে।</h4>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
						
                        <!-- End Single Project -->
						<!-- Start Single Project -->
						
						
                        <div class="col-md-4 col-lg-4 col-sm-6 col-xs-12">
                            <div class="project foo">
                                <div class="project__thumb">
                                    <a href="">
                                        <iframe width="" height="170" src="https://www.youtube.com/embed/lwnYxLwxcIs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
                                    </a>
                                    <div class="">
                                        <div class="">
                                            <h3>Kaisar Hossain</h3>
                                            <h4>ইলেকট্রিক গ্যাং সুইচ বোর্ড কানেকশন ও ফিটিং IPS সহ বাংলা ভিডিও। আশাকরি আপনাদের এই ভিডিওটি অনেক উপকার করবে।</h4>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
						
                        <!-- End Single Project -->
                       
                    </div>
                </div>
            </div>
        </section>
      
    </div>

</body>
</html>



<?php
require('../includes/footer.php');
?>