Всем привет. У меня уде не первый день стоит вопрос о постраничном выводе результатов поиска, но все время какая-нибудь хрень получается...... Скожите плиз что и куда здесь вставить чтоб получилася результа с постраничной разбивкой (желательно ajax) Заранее кланюсь в ноги всем кто подскажет=) Вот скрипт получающий данные методом post PHP: <?php //получаем данные через $_POST if (isset($_POST['search'])) { // подключаемся к базе include('db.php'); $db = new db(); // никогда не доверяйте входящим данным! Фильтруйте всё! $word = mysql_real_escape_string($_POST['search']); $sql = "SELECT * FROM museums_rus WHERE title LIKE '%" . $word . "%' UNION SELECT * FROM museums_fin WHERE title LIKE '%" . $word . "%' ORDER BY title LIMIT 10"; $row = $db->select_list($sql); if(count($row)) { $end_result = ''; foreach($row as $r) { echo '<section class="museum"><div class="divider"></div><div class="clearfix"></div>'; echo '<div class="'.$r['flag'].'"></div>'; echo '<a href="'.$r['link'].'"><h2 class="museum_title">'.$r['title'].'</h2></a>'; echo '<div class="clearfix"></div><div class="museum_info">'.$r['adress'].'</span></div>'; 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 />'; echo '<p align=justify>'.htmlspecialchars(stripslashes($r['decription'])).'</p><p>'.$r['id'].'</p><br />'; echo '<a href="'.$r['link'].'" class="button"></a></section>'; echo $end_result; }} else { echo '<h2 class="museum_title">По вашему запросу ничего не найдено</h2>'; } } ?> Спасибо заранее еще раз всем кто поможет
Отдельная табличка для финских музеев, отдельная для русских - это плохо. Это создаёт дополнительные трудности. Нужно было делать всего одну таблицу для всех музеев и сделать там дополнительное поле country и записывать в него страну, к которой относится музей. Так было бы проще, понятнее и быстрее. С поиском по двум таблицам можно сделать так: PHP: <?php // Сколько записей показывать на странице $perPage = 10; // получаем данные через $_POST if(isset($_REQUEST['search'])) { // подключаемся к базе include('db.php'); $db = new db(); // никогда не доверяйте входящим данным! Фильтруйте всё! $word = mysql_real_escape_string($_REQUEST['search']); // Определим, сколько всего записей соответствуют запросу $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`"; $row = $db->select_list($sql); // Не знаю, что за класс там у тебя и какие ключи для строк возвращает метод select_list(), по этому получу строку так: $row = each($row); $total = $row['value']['total']; // Всего страниц $pages = ceil($total / $perPage); // Запрошенная страница $page = isset($_REQUEST['page']) ? (int) $_REQUEST['page'] : 1; // Если такой страницы нет - значит кто-то балуется. if($page < 1 or $page > $pages) { header('HTTP/1.1 404 Not Found'); exit; } // Посчитаем с какой записи начать выборку $start = ($page - 1) * $perPage; // Получим соответствующие записи $sql = "SELECT * FROM `museums_rus` WHERE `title` LIKE '%" . $word . "%' UNION SELECT * FROM `museums_fin` WHERE `title` LIKE '%" . $word . "%' ORDER BY `title` LIMIT {$start}, {$perPage}"; $row = $db->select_list($sql); if(count($row)) { $end_result = ''; foreach($row as $r) { // Выводим записи $end_result .= '<section class="museum"><div class="divider"></div><div class="clearfix"></div>'; $end_result .= '<div class="' . $r['flag'] . '"></div>'; $end_result .= '<a href="' . $r['link'] . '"><h2 class="museum_title">' . $r['title'] . '</h2></a>'; $end_result .= '<div class="clearfix"></div><div class="museum_info">' . $r['adress'] . '</span></div>'; $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 />'; $end_result .= '<p align=justify>' . htmlspecialchars(stripslashes($r['decription'])) . '</p><p>' . $r['id'] . '</p><br />'; $end_result .= '<a href="' . $r['link'] . '" class="button"></a></section>'; } // Ссылки на страницы (если всего одна страница, то ссылки показывать незачем) if($pages > 1) { $end_result .= '<div class="pages">'; for($i = 1; $i <= $pages; $i++) $end_result .= '<a href="?search=' . urldecode(stripslashes($word)) . '&page=' . $i . '">' . $i . '</a> '; $end_result .= '</div>'; } echo $end_result; } else { echo '<h2 class="museum_title">По вашему запросу ничего не найдено</h2>'; } } ?> Эти запросы выполняются так, как надо на СУБД MySQL 5. Как это будет себя вести на других серверах б.д. - не знаю.