За последние 24 часа нас посетили 18872 программиста и 1623 робота. Сейчас ищут 923 программиста ...

PHP поиск постранично (исправьте плиз ошибки)

Тема в разделе "PHP для новичков", создана пользователем svkarasev, 6 ноя 2011.

  1. svkarasev

    svkarasev Активный пользователь

    С нами с:
    4 ноя 2011
    Сообщения:
    43
    Симпатии:
    1
    Всем добрый вечер.
    Копался и разбирался в скрипте (вывод постраничн данных из бд.

    PHP:
    1. <?php
    2. $nums = 2;
    3. if(isset($_REQUEST['search'])) {
    4. $page = intval($_GET[$_REQUEST['search']]);
    5. }
    6. else {
    7. $page = 1;
    8. }
    9. include('db.php');
    10. $db = new db();
    11. $word = mysql_real_escape_string($_REQUEST['search']);
    12. $sql = "SELECT (SELECT COUNT(*) AS `total` FROM `museums` WHERE `title` LIKE '%{$word}%') AS `total`";
    13. $row = $db->select_list($sql);
    14. $row = each($row);
    15. $total = $row['value']['total'];
    16. $pages = ceil($elements/$nums);
    17. if ($page < 1) {
    18. $page = 1;
    19. }
    20. elseif ($page > $pages) {
    21. $page = $pages;
    22. }
    23. $start = ($page-1)*$nums;
    24. if ($start < 0) $start = 0;
    25.  
    26. $sql = "SELECT * FROM `museums` WHERE `title` LIKE '%" . $word . "%' ORDER BY `title` LIMIT {$start}, {$perPage}";
    27. $row = $db->select_list($sql);
    28. if(count($row)) {
    29. $end_result = '';
    30. foreach($row as $r) {
    31. $end_result .= '<section class="museum"><div class="divider"></div><div class="clearfix"></div>';
    32. $end_result .= '<div class="' . $r['flag'] . '"></div>';
    33. $end_result .= '<a href="' . $r['link'] . '"><h2 class="museum_title">' . $r['title'] . '</h2></a>';
    34. $end_result .= '<div class="clearfix"></div><div class="museum_info">' . $r['adress'] . '</span></div>';
    35. $end_result .= '<a href="' . $r['img'] . '" class="pirobox_gall" title="' . $r['title'] . '"><img src="' . $r['img'] . '" alt="' . $r['title'] . '" width="506" height="250"/></a><br /><br />';
    36. $end_result .= '<p align=justify>' . htmlspecialchars(stripslashes($r['decription'])) . '</p><p>' . $r['id'] . '</p><br />';
    37. $end_result .= '<a href="' . $r['link'] . '" class="button"></a></section>';
    38. }
    39. $neighbours = 6;
    40. $left_neighbour = $page - $neighbours;
    41. if ($left_neighbour < 1) $left_neighbour = 1;
    42. $right_neighbour = $page + $neighbours;
    43. if ($right_neighbour > $pages) $right_neighbour = $pages;
    44. if ($page > 1) {
    45. $end_result .= ' <a href="?page=1">начало</a> ... <a href="?page=' . ($page-1) . '">←сюда</a> ';
    46. }
    47. for ($i=$left_neighbour; $i<=$right_neighbour; $i++) {
    48. if ($i != $page) {
    49. $end_result .= ' <a href="?page=' . $i . '">' . $i . '</a> ';
    50. }
    51. else {
    52. $end_result .= '<b>' . $i . '</b> ';
    53. }
    54. }
    55. if ($page < $pages) {
    56. $end_result .= ' <a href="?page=' . ($page+1) . '">туда→</a> ... <a href="?page=' . $pages . '">конец</a> ';
    57. }
    58. echo $end_result;
    59. } else {
    60. echo '<h2 class="museum_title">По вашему запросу ничего не найдено</h2>';
    61. }
    62.  
    63. ?>    
    Мне тут уже помогали с похожей темкой, но я попытался сделать по другому, но результатов ноль (ничего не находит)
    Пожалуйста укажите мне на ошибки
     
  2. svkarasev

    svkarasev Активный пользователь

    С нами с:
    4 ноя 2011
    Сообщения:
    43
    Симпатии:
    1
    Да и подскажите плиз как ету наву можно по центру выровнять а тол зае****я (извините).
    Зарание спс.=)
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    А что ты имеешь в виду, говоря "ничего не находит"? Хоть что-нибудь на страничке появляется?

    Код (Text):
    1. if(isset($_REQUEST['search'])) {
    2. $page = intval($_GET[$_REQUEST['search']]);
    Это чё?!? [​IMG]
    Может так?
    Код (Text):
    1. $page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 1;
    Если переделал на одну таблицу, то в первом запросе (там, где считается количество записей) - уже не нужен вложенный запрос, достаточно так:
    Код (Text):
    1. $sql = "SELECT COUNT(*) AS `total` FROM `museums` WHERE `title` LIKE '%{$word}%'";
    Код (Text):
    1. $pages = ceil($elements/$nums);
    Откуда взялось $elements? Может быть всё же $total?
     
  5. svkarasev

    svkarasev Активный пользователь

    С нами с:
    4 ноя 2011
    Сообщения:
    43
    Симпатии:
    1
    Спасибо большое но така как мы изменили
    $page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 1;
    как тогда быть сч параметром
    {else
    $page = 1;}
    кот ниже
    пишет что он unexpected
     
  6. svkarasev

    svkarasev Активный пользователь

    С нами с:
    4 ноя 2011
    Сообщения:
    43
    Симпатии:
    1
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Голову включи и посмотри внимательно. Тогда увидешь, что никакой else $page = 1; уже не нужен, его можно удалить просто. Он уже учтён в первой строке:
    $page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 1;