Прощу помочь в следующей проблеме.
Есть страница поиска по выбранным селектам и текстовому полю. Поиск осуществляется по
нажатию сабмита. Все
работает, все гуд. Но хочу сделать постраничный вывод всего найденого.
Такую постраничную уже сделал но для статической инфы, где нет селектов.
Проблема в том, что на первую страницу выводится все как нужно, но при переходе на вторую страницу index.
php?page=2 уже нету значения кнопки submit, от этого сбивается весь
скрипт и нечего выводить, поскольку именно от номера страницы и кнопки поиска завсит что будет выводится. Приписывать к ссылке index.
php?page=2
&submit както несерьезно, да и наверняка будут с этим глюки потом.
Приведенный ниже пример - тестовый, возможно есть ошибки, так как без проверки набросал. В моей странице там все сложнее и по-индусски
Вобщем, может, есть какойто пример рабочий для поиска по базе и постраничного вывода. Или в этом чтото перебрать, но никак не могу доделать, по-всякому уже перекрутил. Сам
скрипт взят с софттайма, причем в оригинале он нерабочий))
Спустя 50 минут, 7 секунд (1.10.2009 - 00:17) jetistyum написал(а):
есть очень даже не плохой пример
google.com
отправляй форму поиска get запросом, ну и ссылки формируй соответственно
<a href="search.
php?q=искомое%20слово&t=20&page=1>1</a>
<a href="search.
php?q=искомое%20слово&t=20&page=2>2</a>
<a href="search.
php?q=искомое%20слово&t=20&page=3>3</a>
Элементарно, Ватсон!
Спустя 5 минут, 28 секунд (1.10.2009 - 00:22) SunSet написал(а):
jetistyum
Тоже не хорошо, если будут видны имена селектов. Неохота опять индусской манере учиться))
В гугле я облазил, пока нашел подходящий скрипт для постраничной навигации. А вот склепать их не получается.
Спустя 3 минуты, 58 секунд (1.10.2009 - 00:26) sergeiss написал(а):
Афигеть... Дайте два!!!
Цитата (SunSet @ 1.10.2009 - 00:27) |
Сам скрипт взят с софттайма, причем в оригинале он нерабочий)) |
А зачем брать за основу
скрипт, про который известно, что он нерабочий? Посмотри поиском по форуму, тут было много насчет постраничного вывода. Это будет намного надежнее.
Находишь вверху слово "Поиск", жмякаешь его, вводишь "постраничная навигация" (и еще не забываешь выбрать нужный раздел в поиске "PHP для начинающих")... И да пребудет с тобой счастье!

(это я, типа того, благословил тебя

)
Спустя 9 минут, 30 секунд (1.10.2009 - 00:36) jetistyum написал(а):
гугл я дал для примера самой постраничной навигации с сохранением строки запроса прямо в get параметрах, может ты считаешь что гугл тоже пример индусского кода?
ну тогда можно сделать через ОПУ.. хранить все например в сессиях или в куках, но тогда не сложно запутаться в двух паралельных сессиях поиска одним юзером, хотя и это можно обойти.
посмотри результаты поиска гуглом по слову сиськи. понажимай 1,2,3 страницу.. слово сиськи передается от страницы к странице через обычнй get параметр, ктому же можно такую ссылку сохранить, или отправить кому-то, а не просить устно поставить там галочку, там выбрать то и то, там се и се..
Спустя 9 минут, 41 секунда (1.10.2009 - 00:45) SunSet написал(а):
sergeissБлагодарю, тебя о всевышний отец, однако смею набраться наглости и опровергнуть твои наставлеяния, ибо выбранный мною
скрипт не настолько иудейский, и имеет в сущности своей простоту и доходчивость для меня. И лишь благодаря молитвам, неуёмной вере и методу тыка я все же смог найти в себе познания и духовную силу найти ложную функцию от нечистого в том
скрипте и заменить ее правильной. И о, чудо, он за
работал!
Но нет.. все мои попытки воссоединить в одно целое во благо добра - постраничку и поиск, - не смог найти в себе знаний великого и непоколебимого PHP, не смог я распознать и отличить истину от лжи (true | false), и не смог найти в себе веры продолжить свои начинания и довести до работоспособности сия чуда математическо-програмного)) О, великий, наставь меня на путь истинный, и огради меня от ссылок на гугл и поиск по форуму. exit (Аминь);
jetistyumЧтото в этом есть... Просто делал сам поиск изначально чтоб нигде не было передачи через Гет. Там не нужно просто сохранение найденого в виде ссылки, а тут видимо прийдется.
Спустя 10 минут, 43 секунды (1.10.2009 - 00:56) sergeiss написал(а):
И зря ты, "сын мой"

, отвергаешь поиск по форуму
Ибо ты сразу мог бы узреть (или узрить - как грамотнее?

), что для определения общего количества позиций надо не выбирать их все, а запустить более "правильный" запрос
PHP |
$res = mysql_query("SELECT count(*) FROM comments WHERE text=$text"); |
Мало того, что он выполнится быстрее, так еще достаточно будет просто прочитать одно единственное значение.
А также, осознав себя программером, ты бы сначала инициализировал переменные, ибо при невыполнении условия
PHP |
if ($page != 1) $pervpage = '<a href= ./?page=1><<</a> <a href= ./?page='. ($page - 1) .'><</a> '; |
переменная $pervpage будет неиницализирована. То есть, она просто не будет существовать. Что может привести к глюкам, даже если вывод ошибок выключен.
И набравшись терпения, минут эдак на 5, ты бы нашел ответ на вопрос, мучающий твою душу:
Цитата (SunSet @ 1.10.2009 - 00:27) |
Вобщем, может, есть какойто пример рабочий для поиска по базе и постраничного вывода. |
Потому как в том поиске по форуму, именно по этим словам, есть ну просто куча информации.
Спустя 4 минуты, 54 секунды (1.10.2009 - 01:01) SunSet написал(а):
sergeissВ оригинале
скрипта там действительно идет подсчет строк через COUNT (), но чтото оно со мной не захотело дружить, решил долго не заморачиваться и временно вывести через mysql_num_rows.
А про переменную $pervpage - это пинать автора софттайма.
Щас поищу все же, попробуй найти подходящее под мои запросы.
Спустя 15 минут, 52 секунды (1.10.2009 - 01:17) sergeiss написал(а):
Цитата (SunSet @ 1.10.2009 - 02:01) |
В оригинале скрипта там действительно идет подсчет строк через COUNT (), но чтото оно со мной не захотело дружить, решил долго не заморачиваться и временно вывести через mysql_num_rows.
|
Неправильный подход. Представь, что там 400 полей и 100 тыс. записей. Нафига выбирать все эти данные? При этом же ведь они физически выбираются в новый временный файл, во временную таблицу.
И кстати. При большом количестве записей не только "простая" выборка, но и "простой" COUNT() могут работать достаточно долго. Поэтому для больших таблиц постоянно делать COUNT не стоит.
Цитата |
А про переменную $pervpage - это пинать автора софттайма. |
Ну уж нет

Ты взял - подумай, "причеши" самостоятельно. Иначе это выглядит так: "я тут какую-то хрень нашел, может быть это то, что мне надо; вы тут гляньте, то ли это, что мне нужно; а мне, мол, лень самому". Скорее всего, это не так, но выглядит-то так...
И уж когда действительно что-то непонятно будет (после того, как сам продумал), то тогда и спрашивай.
Спустя 14 минут, 33 секунды (1.10.2009 - 01:31) SunSet написал(а):
Цитата |
sergeiss Неправильный подход. |
Правильный)) Я же сказал что временно заменил и записей там не сто тыщ, а еле с десяток наберется)) Зачем так сразу пугать))
И сперва хочу довести до работоспособного вида, а затем уже делать проверки.

А то, так сказать, машина без колес стоит, а я фары протирать буду)))
Спустя 23 минуты, 4 секунды (1.10.2009 - 01:55) sergeiss написал(а):
SunSet - оффтоп: если ты хочешь процитировать чьи-то слова, то сначала выделяешь их, а потом жмешь такую серую кнопку с белой стрелкой. Которая находится справа-внизу именно того сообщения, из которого берешь цитату. Правда, это
работает только при использовании "Быстрого ответа".
И - о, чудо Маниту!

- цитата сразу же переходит в окно "Быстрого ответа", находящееся внизу страницы.
Спустя 6 минут, 10 секунд (1.10.2009 - 02:01) SunSet написал(а):
sergeiss
А зачем тогда в панельке кнопка цитаты?
Спасиб за совет, я даже не подозревал о существовании той кнопки) Хотя, изза своего склероза завтра уже могу про нее забыть))
А по теме - вот вроде сделал то что хотел, прикрутил передачу через гет параметров по типу
PHP |
if($page + 1 <= $total) $page1right = ' | <a href= ./?page='. ($page + 1) .'&country_id='.$country_id.'®ion_id='.$region_id.'&city_id='.$city_id.'&search='.$search.'&submit_s=1>'. ($page + 1) .'</a>'; |
jetistyumреспект, по твоему методу прийдется сделать.
Както меня пугает, что так быстро получилось.. не к добру это)))
Спустя 10 минут, 57 секунд (1.10.2009 - 02:12) sergeiss написал(а):
Цитата (SunSet @ 1.10.2009 - 03:01) |
А зачем тогда в панельке кнопка цитаты? |
Это атавизм

Переход на другую страницу, где будет процитировано всё сообщение.
Но можно всё то же самое сделать и в "Быстром ответе". Который мне лично нравится больше.
Спустя 6 минут, 3 секунды (1.10.2009 - 02:18) SunSet написал(а):
sergeissЯ о другой кнопке сейчас)

Вот эта.
Кстати, так как на этом форуме в большей части вопросов приводится код
скрипта, можно было б чуть выше кнопочек форматирования текста (картинки, ссылки и пр) сделать надпись типа "Оформлять код кнопками

". А то часто новички забывают об этом, а так напоминание будет.
Спустя 3 дня, 12 часов, 50 минут, 46 секунд (4.10.2009 - 15:08) mark1 написал(а):
извините что вклиниваюсь,но могли бы вы показать код этой страницы поиска по выбранным селектам и текстовому полю.Очень надо
Спасибо заранее
Спустя 23 минуты, 53 секунды (4.10.2009 - 15:32) SunSet написал(а):
mark1
Подсказывать код этой страницы нету смысла, потому как работающая система поиска работает на основе 4-х таблиц и 6-ти нужных файлов.
Спустя 25 дней, 4 часа, 26 минут, 21 секунда (29.10.2009 - 20:59) G3/SG1 написал(а):
Может так?
PHP |
if(isset($_POST['submit'])){
$text = mysql_real_escape_string($_POST['text']); $_GET['mode'] = "search"; $page = isset($_GET['page'])&&ctype_digit($_GET['page'])&&$_GET['page']!=0?$_GET['page']:1;
$offset = $page * 10 - 10; $onpage = 10; #сколько результатов показывать на странице
$query = mysql_query("SELECT * FROM comments WHERE text LIKE '%$text%' LIMIT $offset, $onpage"); $all = mysql_result(mysql_query("SELECT COUNT(*) FROM comments WHERE text LIKE '%$text%'"), 0);
$pages = ceil($all/$onpage);
for($a=1; $a<=$pages; $a++){ echo "<a href=\"?mode=search&page=$a\">".$a.'</a> '; } #выводка результатов
}else{ ?> <form name="form1" method="post" action="">
<input type="text" name="text" id="textfield"> <input type="submit" name="submit" id="button" value="Submit"> </form> <?}
|
_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)