[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск путает ссылки
Vok
Здравствуйте. У меня такая проблема. Сделал поиск по базе, вывод на страницу и постраничное разбитие. Пагинатор так называемый. Код 100% рабочий, но.. с одним условием. Если я присвою значение переменной '$stroka'. А если получать из поля ввода - отображает только первую страницу со всеми ссылками, но на других страницах пусто...
Если задать в коде, допустим $stroka = "просвещение"; то находит и выводит все правильно.
Как мне теперь прикрутить ее к полю ввода?

Вот форма:

<form name="search" method="post">
<input
id="input" size="60" name="stroka" type="text" value="">
<input
type="submit" value="Начать поиск">
</form>



А вот PHP:

<?php
$count_per_page = 3;
$page = 1;
?>
<?php

// $stroka = '1'; задаю - ищет, не задано - выводит все.

$result = mysql_query('SELECT round(count(book_id)/' . $count_per_page . ') FROM book');
$counts = mysql_fetch_row($result);

$page_max = $counts[0];

if (!empty($_GET['page'])) {
$page = (int) $_GET['page'];
if ($page > $page_max)
$page = $page_max;
if ($page < 1)
$page = 1;
}

$result = mysql_query ('SELECT * FROM book WHERE book.book_id LIKE "%'.$stroka.'%"
OR book.name LIKE "%'
.$stroka.'%" OR book.autor LIKE "%'.$stroka.'%"
OR book.izdat LIKE "%'
.$stroka.'%" OR book.page LIKE "%'.$stroka.'%"
OR book.year LIKE "%'
.$stroka.'%" OR book.money LIKE "%'.$stroka.'%"
OR book.description LIKE "%'
.$stroka.'%"
LIMIT '
.(($page - 1) * $count_per_page). ', ' .$count_per_page);

$libr = mysql_num_rows($result);

if ($libr!==0){

$table = "<table>\n";

while ($row = mysql_fetch_assoc($result)){
$table .= "<tr>\n";

$table .= "<td>".$row['book_id']."</td>\n";
$table .= "<td>".$row['name']."</td>\n";
$table .= "<td>".$row['autor']."</td>\n";
$table .= "<td>".$row['izdat']."</td>\n";
$table .= "<td>".$row['description']."</td>\n";

$table .= "</tr>\n";
}

$table .= "</table>\n";

echo $table;

for ($i=1; $i<$page_max; ++$i) {
if ($i != $page) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
else {

echo ''.$i.' ';
}
}
}

?>


Пробовал делать такую проверку в начале кода:

$stroka = '';
if (isset($_POST['stroka'])){
$stroka = strip_tags($_POST['stroka']);
}

$stroka = trim($stroka);
if (!empty($stroka)){

Перестает работать. Что не так?



Спустя 2 часа, 8 минут, 27 секунд (23.01.2010 - 03:45) dr_Lev написал(а):
По-моему с кодировкой нужно поработать... посмотри, какую строку получаешь...

P.S. Если в строке есть русские буквы и строка в UTF-8 то регулярка ereg("([\xD0-\xD1].){3,}",$text) вернет true,

Спустя 8 часов, 7 минут, 9 секунд (23.01.2010 - 11:53) Vok написал(а):
Нет, кодировка, к сожалению, ни при чем, первую страницу нормально все выводит, снимаю поиск, заранее задав $stroka, все работает. А так только первая страница показывается, а перехожу на другие - пусто. Может быть переменная не передается? Пробовал сессию прописать - не помогает.

Спустя 2 часа, 11 минут, 43 секунды (23.01.2010 - 14:04) Vok написал(а):
Ура! Два дня мучений позади! user posted image
Решение нашел. Оказалось: страница то обновляется, следовательно $stroka не переносится на новую страницу. Пробовал сессии - не работает. Подставил в форму поиска
name="stroka" value="<? $_GET['stroka']; ?>"
и в ссылку добавил
?page=' . $i . '&stroka='.$stroka.'">
Все! Теперь работает пагинатор, ну и названьеце, блин!
Всем спасибо, тему можно закрывать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.