|
|
|
| Помогите, пожалуйста, с постраничной навигацией, ничего не выходит
<form action="" method="POST">
<input type="text" name="zpr" size="50">
<input type="submit" value=" поиск " name="goo"><br>
<input type="radio" name="radio" checked value="or">ИЛИ
<input type="radio" name="radio" value="and">И
</form>
<?php
// Получаем данные из формы
if(strlen(@$_POST['zpr'])<3)exit("");
$rad = @$_POST["radio"];
$zapros = @$_POST["zpr"];
// Удаляем символы. Проверка формы на непустой ввод.
// Удаляет пробелы. Разбиваем строку на слова. Формируем запросы
$zapros = preg_replace("|[^a-zа-яё0-9 ]+|i", "", $zapros);
if(strlen($zapros)<3)exit("Введено недостаточное количество символов");
$zapros = trim($zapros);
$zapros = strtolower($zapros);
$words = preg_split("|[\s]+|",$zapros);
foreach($words as $wrd)
{
$tmp[] = "title LIKE '%$wrd%' and hide = 1";
}
if(!empty($tmp))
{
$query = "SELECT count(*) FROM metadata WHERE ".implode(" $rad ", $tmp);
$query1 = "SELECT * FROM metadata WHERE ".implode(" $rad ", $tmp);
}
// Открываем БД
$db = sqlite_open("inc/sity.db");
// Выбираем количество записей
$posts = sqlite_query($db, "$query1 ORDER BY id LIMIT 30");
// Выводим сообщения
while ($arr = sqlite_fetch_array($posts))
{
echo("<p><a href=\"".$arr['page'].".htm\">".$arr['title']."</a> ...</p>");
}
?>
|
| |
|
|
|
|
|
|
|
для: dedev
(23.11.2006 в 10:53)
| | вам нужна переменная $start_from и limit надо писать так: limit $start_from, 30 - т.е. выбираем
30 записей, начиная со строки номер ... а номер этот изначально равен 0, а потом будет
передаваться в ссылке на следующие страницы...
а ссылок на след./пред. страницы я что-то не заметила.
PS когда что-то спрашиваете и приводите пример кода, приводите и ошибки, которые выдает
база или скриншот. "ничего не выходит" - это не ошибка. выведите на экран запрос, когда он
строится динамически, из скрипта, бывает полезно на него глянуть и кинуть в phpmyadmin для проверки. | |
|
|
|
|
|
|
|
для: elenaki
(23.11.2006 в 11:34)
| | Ссылок следующая/предыдущая страница нет, по причини того, что начато все с нуля, постраничной навигации пока нет вообще.
Вопрос как ее прикрутить к этому коду
Вариант который у меня не работает, прелагается, но лучше помогите с первым вариантом, так сказать с чистого листа
<form action="" method="POST">
<input type="text" name="zpr" size="40">
<input type="submit" value="поиск" name="goo"><br>
<input type="radio" name="radio" checked value="or"> ИЛИ
<input type="radio" name="radio" value="and"> И
</form>
<?php
// Получаем данные из формы
if(strlen(@$_POST['zpr'])<3)exit("");
$rad = @$_POST["radio"];
$zapros = @$_POST["zpr"];
// Удаляем символы. Проверка формы на непустой ввод.
// Удаляет пробелы. Разбиваем строку на слова. Формируем запросы
$zapros = preg_replace("|[^a-zа-яё0-9 ]+|i", "", $zapros);
if(strlen($zapros)<3)exit("Введено недостаточное количество символов");
$zapros = trim($zapros);
$zapros = strtolower($zapros);
$words = preg_split("|[\s]+|",$zapros);
foreach($words as $wrd)
{
$tmp[] = "title LIKE '%$wrd%' and hide = 1 or keywords LIKE '%$wrd%' and hide = 1";
}
if(!empty($tmp))
{
$query = "SELECT count(*) FROM metadata WHERE ".implode(" $rad ", $tmp);
$query1 = "SELECT * FROM metadata WHERE ".implode(" $rad ", $tmp);
}
// Открываем БД
$db = sqlite_open("sity.db");
// Определяем общее количество записей в таблице
$total = sqlite_query($db, $query);
$count = sqlite_fetch_array($total);
// Стартовая точка
if (isset($_GET['page'])) {
$page = trim($_GET['page']);
if (!is_numeric($page)) $page = 0;
if ($page < 0) $page = 0;
} else {
$page = 0;
}
// Выбираем количество записей
$posts = sqlite_query($db, "$query1 ORDER BY id LIMIT ".$page.", 1");
echo "<CENTER>Вы искали '<font color=red>$zapros</font>'<br>";
// Выводим ссылки "далее" и "назад"
if ($page > 0) {
echo("<a href=\"poisk.php?page=".($page - 1)."\">назад</a> ");
}
if ($count['count(*)'] > ($page + 1)) {
echo(" <a href=\"poisk.php?page=".($page + 1)."\">далее</a></CENTER>");
}
// Выводим сообщения
while ($arr = sqlite_fetch_array($posts))
{
echo("<p align=left><a href=\"".$arr['page'].".htm\">".$arr['title']."</a><br>".$arr['description']."...</p><br>");
}
?>
|
| |
|
|
|
|
|
|
|
для: dedev
(23.11.2006 в 11:47)
| | вам надо кроме номера страницы передавать еще и строку, которую вы ищете, ведь запрос при смене страниц будет каждый раз выполняться заново - в этом и смысл постранички, выводить из базы не сразу все записи, а кусками для быстроты и удобства. тут кто-то предлагал хранить строку в переменной сессии. я делаю через URL. | |
|
|
|