Просмотр файла search.php

Размер файла: 5.85Kb
  1. <?php
  2. define( 'WBCAT', 1 );
  3. require_once ('inc/head.php');
  4. echo '<div class="zag">Поиск сайта</div>';
  5. if ($settings['search'] == false && !$allow) {
  6. echo '<div class="title">Данный модуль закрыт администратором !</div>';
  7. require_once ('inc/foot.php');
  8. exit;
  9. }
  10. if ($allow) {
  11. echo ''.($settings['search'] == false ? '<div class="title"><img src="images/red.png"/><small> <b>Модуль отключен для гостей ! Включить можно в <a href="adm/index.php?mod=set">Общих настройках</a></b></small></div>' : '<div class="title"><small>Статус модуля</small> : <img src="images/green.png"/></div> ').'';
  12. }
  13.  
  14. echo '<div class="title"><form action="'.$_SERVER['PHP_SELF'].'" method="POST" name="form">
  15. Введите запрос <small>[min 4 , max 60 символов]</small><br/>
  16. <input type="text" name="search" maxlenght="60" value="'.htmlspecialchars($_POST['search']).'"/><br/>
  17. Параметры поиска :<br/>
  18. <select name="m">
  19. <option value="1">url</option>
  20. <option value="2">название сайта</option>
  21. <option value="3">описание сайта</option>
  22. </select><br/>
  23. <input name="n" type="checkbox" value="1"/> Точный поиск<br/>
  24. <input type="submit" name="go"value="Поиск">
  25. </form></div>';
  26.  
  27. if (isset($_POST['go']) ) {
  28. if (empty($_POST['search'])) {
  29. $error[1] = 'Вы не ввели адрес сайта !';
  30. }
  31. if (mb_strlen($_POST['search']) < 4 || mb_strlen($_POST['search']) > 64 ) {
  32. $error[2] = 'Длина запроса должна быть не менее 4 символов и не привышать 64 символа !';
  33. }
  34. }
  35. if (!empty($error)) {
  36. echo '<div class="title">';
  37. foreach($error as $value) {
  38. echo "<b>$value</b> <br />";
  39. }
  40. echo '</div>';
  41. require_once ('inc/foot.php');
  42. exit();
  43. }
  44.  
  45. $mm = isset ($_POST['m']) ? intval($_POST['m']) : '';
  46. $mm = $mm ? $mm : rawurldecode(trim($_GET['m']));
  47. $n = isset ($_POST['n']) ? $_POST['n'] : '';
  48. $n = $n ? $n : rawurldecode(trim($_GET['n']));
  49. $search = isset ($_POST['search']) ? trim($_POST['search']) : '';
  50. $search = strtr($search, array('_' => '\\_', '%' => ' ','$' => ' ', '*' => '%'));
  51. $search = $search ? $search : rawurldecode(trim($_GET['search']));
  52. if ($search) {
  53. $search_db = 'LIKE \'' . mysql_real_escape_string('%' . $search . '%') . '\'';
  54. if ($_POST['n'] == false) $search_db = 'LIKE \'' . mysql_real_escape_string('%' . $search . '%') . '\'';
  55. if ($_POST['n'] == true) {
  56. $search_db = '= "'.mysql_real_escape_string($search).'"';
  57. }
  58. $zap = '`about`';
  59. if ($_POST['m'] == 1 || $_GET['mm'] == 1) $zap = '`url`';
  60. if ($_POST['m'] == 2 || $_GET['mm'] == 2) $zap = '`name`';
  61. if ($_POST['m'] == 3 || $_GET['mm'] == 3) $zap = '`about`';
  62. $num = 2;
  63. $page = intval($_GET['page']);
  64. $result = mysql_query('SELECT COUNT(*) FROM `sites` WHERE '.$zap.' '.$search_db.' ');
  65. $posts = mysql_result($result, 0);
  66. $total = intval(($posts - 1) / $num) + 1;
  67. if(empty($page) or $page < 0) $page = 1;
  68. if($page > $total) $page = $total;
  69. $start = $page * $num - $num;
  70. $result = mysql_query('SELECT * FROM `sites` WHERE '.$zap.' '.$search_db.' ORDER BY `id` DESC LIMIT '.$start.', '.$num.'');
  71. $counter= $start;
  72. if ($posts > 0) {
  73. while ($ms = mysql_fetch_array($result)) {
  74. $counter++;
  75. echo '<div class="main">'.$counter.'. '.$ms['name'].' ['.$ms['url'].']<br/>'.$ms['about'].'<br/><a href="'.$settings['url'].'/cat.php?id='.$ms['id_cat'].'&mod=view&site='.$ms['id'].'">Подробнее</a></div>';
  76. }
  77. if ($page != 1) $pervpage = ' <a href= "search.php?search='.$search.'&n=0&mm='.$mm.'&page='. ($page - 1) .'">Назад</a> ';
  78. // Проверяем нужны ли стрелки вперед
  79. if ($page != $total) $nextpage = ' <a href="search.php?search='.$search.'&n=0&mm='.$mm.'&page='. ($page + 1) .'">Вперед</a>';
  80. if ($page !=1 AND $page != $total) $i = '|';
  81. // Перваяя и последняя страницы
  82. if ($page - 4 > 0) $first = '<a href="search.php?search='.$search.'&n=0&mm='.$mm.'&page=1">1</a>...';
  83. if ($page + 4 <= $total) $last = '...<a href="search.php?search='.$search.'&n=0&mm='.$mm.'&page='.$total.'">'.$total.'</a>';
  84. // Находим две ближайшие станицы с обоих краев, если они есть
  85. if($page - 2 > 0) $page2left = ' <a href= "search.php?search='.$search.'&n=0&mm='.$mm.'&page='. ($page - 2) .'">'. ($page - 2) .'</a> ';
  86. if($page - 1 > 0) $page1left = '<a href= "search.php?search='.$search.'&n=0&mm='.$mm.'&page='. ($page - 1) .'">'. ($page - 1) .'</a> ';
  87. if($page + 2 <= $total) $page2right = ' <a href="search.php?search='.$search.'&n=0&mm='.$mm.'&page='. ($page + 2) .'">'. ($page + 2) .'</a>';
  88. if($page + 1 <= $total) $page1right = ' <a href="search.php?search='.$search.'&n=0&mm='.$mm.'&page='. ($page + 1) .'">'. ($page + 1) .'</a>';
  89.  
  90. // Вывод меню
  91. if ($posts > $num) {
  92. echo '<div class="title"><small>Навигация :<br/>Страница '.$page.' из '.$total.'</small><br/>'.$pervpage.$i.$nextpage.'<br/>'.$first.$page2left.$page1left.'['.$page.']'.$page1right.$page2right.$last.'</div>';
  93. }
  94. } else {
  95. echo '<div class="title">Ничего не найдено !</div>';
  96. }
  97. echo '<div class="zag">Совпадений : '.$posts.'</div>';
  98. }
  99. echo '<div class="main"><a href="'.$settings['url'].'">Главная</a></div>';
  100. require_once ('inc/foot.php');
  101. ?>