search.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <?php
  2. include("config.php");
  3. include("classes/SiteResultsProvider.php");
  4. include("classes/ImageResultsProvider.php");
  5. if(isset($_GET["term"])) {
  6. $term = $_GET["term"];
  7. }
  8. else {
  9. exit("You must enter a search term");
  10. }
  11. $type = isset($_GET["type"]) ? $_GET["type"] : "sites";
  12. $page = isset($_GET["page"]) ? $_GET["page"] : 1;
  13. ?>
  14. <!DOCTYPE html>
  15. <html>
  16. <head>
  17. <title>Welcome to Google</title>
  18. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.3.5/jquery.fancybox.min.css" />
  19. <link rel="stylesheet" type="text/css" href="assets/css/style.css">
  20. <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
  21. </head>
  22. <body>
  23. <div class="wrapper">
  24. <div class="header">
  25. <div class="headerContent">
  26. <div class="logoContainer">
  27. <a href="index.php">
  28. <img src="assets/images/googleLogo.png">
  29. </a>
  30. </div>
  31. <div class="searchContainer">
  32. <form action="search.php" method="GET">
  33. <div class="searchBarContainer">
  34. <input type="hidden" name="type" value="<?php echo $type; ?>">
  35. <input class="searchBox" type="text" name="term" value="<?php echo $term; ?>" autocomplete="off">
  36. <button class="searchButton">
  37. <img src="assets/images/icons/search.png">
  38. </button>
  39. </div>
  40. </form>
  41. </div>
  42. </div>
  43. <div class="tabsContainer">
  44. <ul class="tabList">
  45. <li class="<?php echo $type == 'sites' ? 'active' : '' ?>">
  46. <a href='<?php echo "search.php?term=$term&type=sites"; ?>'>
  47. Sites
  48. </a>
  49. </li>
  50. <li class="<?php echo $type == 'images' ? 'active' : '' ?>">
  51. <a href='<?php echo "search.php?term=$term&type=images"; ?>'>
  52. Images
  53. </a>
  54. </li>
  55. </ul>
  56. </div>
  57. </div>
  58. <div class="mainResultsSection">
  59. <?php
  60. if($type == "sites") {
  61. $resultsProvider = new SiteResultsProvider($con);
  62. $pageSize = 20;
  63. }
  64. else {
  65. $resultsProvider = new ImageResultsProvider($con);
  66. $pageSize = 30;
  67. }
  68. $numResults = $resultsProvider->getNumResults($term);
  69. echo "<p class='resultsCount'>$numResults results found</p>";
  70. echo $resultsProvider->getResultsHtml($page, $pageSize, $term);
  71. ?>
  72. </div>
  73. <div class="paginationContainer">
  74. <div class="pageButtons">
  75. <div class="pageNumberContainer">
  76. <img src="assets/images/pageStart.png">
  77. </div>
  78. <?php
  79. $pagesToShow = 10;
  80. $numPages = ceil($numResults / $pageSize);
  81. $pagesLeft = min($pagesToShow, $numPages);
  82. $currentPage = $page - floor($pagesToShow / 2);
  83. if($currentPage < 1) {
  84. $currentPage = 1;
  85. }
  86. if($currentPage + $pagesLeft > $numPages + 1) {
  87. $currentPage = $numPages + 1 - $pagesLeft;
  88. }
  89. while($pagesLeft != 0 && $currentPage <= $numPages) {
  90. if($currentPage == $page) {
  91. echo "<div class='pageNumberContainer'>
  92. <img src='assets/images/pageSelected.png'>
  93. <span class='pageNumber'>$currentPage</span>
  94. </div>";
  95. }
  96. else {
  97. echo "<div class='pageNumberContainer'>
  98. <a href='search.php?term=$term&type=$type&page=$currentPage'>
  99. <img src='assets/images/page.png'>
  100. <span class='pageNumber'>$currentPage</span>
  101. </a>
  102. </div>";
  103. }
  104. $currentPage++;
  105. $pagesLeft--;
  106. }
  107. ?>
  108. <div class="pageNumberContainer">
  109. <img src="assets/images/pageEnd.png">
  110. </div>
  111. </div>
  112. </div>
  113. </div>
  114. <script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.3.5/jquery.fancybox.min.js"></script>
  115. <script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
  116. <script type="text/javascript" src="assets/js/script.js"></script>
  117. </body>
  118. </html>