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

Помогите пожалуйста срочно!!!

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

  1. svkarasev

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

    С нами с:
    4 ноя 2011
    Сообщения:
    43
    Симпатии:
    1
    Всем привет.
    У меня уде не первый день стоит вопрос о постраничном выводе результатов поиска, но все время какая-нибудь хрень получается...... Скожите плиз что и куда здесь вставить чтоб получилася результа с постраничной разбивкой (желательно ajax)
    Заранее кланюсь в ноги всем кто подскажет=)
    Вот скрипт получающий данные методом post

    PHP:
    1. <?php
    2. //получаем данные через $_POST
    3. if (isset($_POST['search'])) {
    4.    // подключаемся к базе
    5.    include('db.php');
    6.    $db = new db();
    7.    // никогда не доверяйте входящим данным! Фильтруйте всё!
    8.    $word = mysql_real_escape_string($_POST['search']);
    9.    $sql = "SELECT * FROM museums_rus WHERE title  LIKE  '%" . $word . "%' UNION SELECT * FROM museums_fin WHERE title  LIKE  '%" . $word . "%'
    10.   ORDER BY title LIMIT 10";
    11.    $row = $db->select_list($sql);
    12.    if(count($row)) {
    13.        $end_result = '';
    14.        foreach($row as $r) {
    15. echo '<section class="museum"><div class="divider"></div><div class="clearfix"></div>';
    16. echo '<div class="'.$r['flag'].'"></div>';
    17. echo '<a href="'.$r['link'].'"><h2 class="museum_title">'.$r['title'].'</h2></a>';
    18. echo '<div class="clearfix"></div><div class="museum_info">'.$r['adress'].'</span></div>';
    19. echo '<a href="'.$r['img'].'" class="pirobox_gall" title="'.$r['title'].'"><img src="'.$r['img'].'" alt="'.$r['title'].'" width="506" height="250"/></a><br /><br />';
    20. echo '<p align=justify>'.htmlspecialchars(stripslashes($r['decription'])).'</p><p>'.$r['id'].'</p><br />';
    21. echo '<a href="'.$r['link'].'" class="button"></a></section>';
    22. echo $end_result;
    23. }} else {
    24. echo '<h2 class="museum_title">По вашему запросу ничего не найдено</h2>';
    25. }
    26.    
    27. }
    28. ?>

    Спасибо заранее еще раз всем кто поможет
     
  2. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    phpfaq.ru/paginator. Без аякса.
     
  3. svkarasev

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

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

    Я пытался.....Ничего из етого не вышло...
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Лаба горит?
     
  5. svkarasev

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

    С нами с:
    4 ноя 2011
    Сообщения:
    43
    Симпатии:
    1
    что ето такое?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Типа курсовой
     
  7. svkarasev

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

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

    :cry: типа того
    Помогите кто-нить плиз
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Отдельная табличка для финских музеев, отдельная для русских - это плохо. Это создаёт дополнительные трудности. Нужно было делать всего одну таблицу для всех музеев и сделать там дополнительное поле country и записывать в него страну, к которой относится музей. Так было бы проще, понятнее и быстрее.
    С поиском по двум таблицам можно сделать так:
    PHP:
    1. <?php
    2. // Сколько записей показывать на странице
    3. $perPage = 10;
    4. // получаем данные через $_POST
    5. if(isset($_REQUEST['search'])) {
    6.     // подключаемся к базе
    7.     include('db.php');
    8.     $db = new db();
    9.     // никогда не доверяйте входящим данным! Фильтруйте всё!
    10.     $word = mysql_real_escape_string($_REQUEST['search']);
    11.     // Определим, сколько всего записей соответствуют запросу
    12.     $sql = "SELECT ((SELECT COUNT(*) AS `total` FROM `museums_fin` WHERE `title` LIKE '%{$word}%') + (SELECT COUNT(*) AS `total` FROM `museums_rus` WHERE `title` LIKE '%{$word}%')) AS `total`";
    13.     $row = $db->select_list($sql);
    14.     // Не знаю, что за класс там у тебя и какие ключи для строк возвращает метод select_list(), по этому получу строку так:
    15.     $row = each($row);
    16.     $total = $row['value']['total'];
    17.     // Всего страниц
    18.     $pages = ceil($total / $perPage);
    19.     // Запрошенная страница
    20.     $page = isset($_REQUEST['page']) ? (int) $_REQUEST['page'] : 1;
    21.     // Если такой страницы нет - значит кто-то балуется.
    22.     if($page < 1 or $page > $pages) {
    23.         header('HTTP/1.1 404 Not Found');
    24.         exit;
    25.     }
    26.     // Посчитаем с какой записи начать выборку
    27.     $start = ($page - 1) * $perPage;
    28.     // Получим соответствующие записи
    29.     $sql = "SELECT * FROM `museums_rus` WHERE `title` LIKE '%" . $word . "%' UNION SELECT * FROM `museums_fin` WHERE `title` LIKE '%" . $word . "%' ORDER BY `title` LIMIT {$start}, {$perPage}";
    30.     $row = $db->select_list($sql);
    31.     if(count($row)) {
    32.         $end_result = '';
    33.         foreach($row as $r) {
    34.             // Выводим записи
    35.             $end_result .= '<section class="museum"><div class="divider"></div><div class="clearfix"></div>';
    36.             $end_result .= '<div class="' . $r['flag'] . '"></div>';
    37.             $end_result .= '<a href="' . $r['link'] . '"><h2 class="museum_title">' . $r['title'] . '</h2></a>';
    38.             $end_result .= '<div class="clearfix"></div><div class="museum_info">' . $r['adress'] . '</span></div>';
    39.             $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 />';
    40.             $end_result .= '<p align=justify>' . htmlspecialchars(stripslashes($r['decription'])) . '</p><p>' . $r['id'] . '</p><br />';
    41.             $end_result .= '<a href="' . $r['link'] . '" class="button"></a></section>';
    42.         }
    43.         // Ссылки на страницы (если всего одна страница, то ссылки показывать незачем)
    44.         if($pages > 1) {
    45.             $end_result .= '<div class="pages">';
    46.             for($i = 1; $i <= $pages; $i++)
    47.                 $end_result .= '<a href="?search=' . urldecode(stripslashes($word)) . '&amp;page=' . $i . '">' . $i . '</a> &nbsp; ';
    48.             $end_result .= '</div>';
    49.         }
    50.         echo $end_result;
    51.     } else {
    52.         echo '<h2 class="museum_title">По вашему запросу ничего не найдено</h2>';
    53.     }
    54. }
    55. ?>
    Эти запросы выполняются так, как надо на СУБД MySQL 5. Как это будет себя вести на других серверах б.д. - не знаю.
     
  9. svkarasev

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

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

    Спасибо =) ты помог мне спости проект =) =*