|
|
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Здраствуйте Есть запрос. Бродит пользователь по каталогу, вошел в раздел, выбрал регион (область) и ему показало список вот за таким запросом: Код: sql 1. 2. 3. 4. 5. 6. 7. отстортировано по promo (репутация - количество репостов) и дате регистрации. Входит уже в новость по id. Какой самый оптимальный вариант чтоб пользователю показать предыдущую страницу с той же сортировкой ну и следующую. Условие > или < id - не получится. А как ? Может сделать два поля и туда UPDATE загнать готовые id. Но я не знаю как запрос в запрос вставлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 16:48:47 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Андрей159предыдущую страницуПредыдущую страницу чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 16:57:03 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
miksoftАндрей159предыдущую страницуПредыдущую страницу чего? Пост, новость, блог, товар в интернет магазине, страница партнера, анкета пользователя - можно называть как угодно. Нужно в страницу "Новости" (пусть будет новость) уже выдать ссилку на следующую новость и на предыдущую. А нам известно только id новости и все данные новости. А предыдущий запрос показывает не новость а список новостей. Если б мог узнать хотябы позицию в списке, то я бы просто изменил LIMIT н1 , н2 и все. А так не знаю. Понятное дело, что можно давать эту переменную вместе с ссилкой, но тогда поисковые системы начнут наново индексировать, кроме того появится множество зеркальных страниц. Понимаете задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 17:06:26 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Обычно, когда сортировка идет по одному полю, выполняются такого рода запросы: Код: sql 1. Код: sql 1. Для предыдущей и следующей новости, соответственно. Как сюда приделать ваши три поля - зависит от их логики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 17:17:21 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
вот и я о том же. так выходит, что нужно делать дополнительный запрос, который сначала при помощи PHP пройдеься в цыкле по всем id моего запроса и методом update сделает свой счетчик в дополнительное поле id2. А вот тогда я могу и пользваться уже тем способом что вы описали, только вместо news_date использовать id2, ну и текущий id2. Подцепить под CRON. Другого пути не вижу. Да и то можно готовый id следующего поста прописать в отдельное поле раз уж UPDATE пошел в ход. Не нужно будет потом делать два дополнительных запросов. Ладно. Попробую тогда так сделать. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 17:25:05 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Андрей159пройдеься в цыкле по всем id моего запроса и методом update сделает свой счетчик в дополнительное поле id2.А что, порядок сортировки всегда один и тот же? Или меняется от чего-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 17:32:04 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Есть, кстати, обходной маневр - передавать номера соседних страниц через дополнительные параметры в url-е. А чтобы не возникало дублей в индексах поисковиков, добавить каноническую ссылку . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 17:36:01 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
miksoftАндрей159пройдеься в цыкле по всем id моего запроса и методом update сделает свой счетчик в дополнительное поле id2.А что, порядок сортировки всегда один и тот же? Или меняется от чего-то? Порядок один. Сортировка будет менятся в зависимости от рейтинга пользователя. Само события (изменения рейтинга и накрученного (купленного рейтинга)) срабатывает и могу фиксировать в отдельное поле флаг=False. Таким образом можно будет частично делать обновления индексов незатрагивая записей, которые фактически никак не будут изменяться. Пару часиков посижу. Нужно сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 19:06:56 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
miksoftЕсть, кстати, обходной маневр - передавать номера соседних страниц через дополнительные параметры в url-е. А чтобы не возникало дублей в индексах поисковиков, добавить каноническую ссылку . Отлично, но из поисковика всегда забрасывает не в каталог, а уже на отдельную страницу, и если так случится, то она не будет иметь никаких переменных. Ссылки не будут работать. Остается вариант только индексировать их самостоятельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 19:10:14 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Андрей159Порядок один. Сортировка будет менятсяВы меня озадачили :) Так один или будет меняться? Андрей159в зависимости от рейтинга пользователяПользователя, который смотрит эти новости? Т.е. для меня порядок новостей один, для Вас другой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 19:14:29 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Андрей159Отлично, но из поисковика всегда забрасывает не в каталог, а уже на отдельную страницу, и если так случится, то она не будет иметь никаких переменных.А какие могут быть соседние страницы, если в этот момент мы не знаем порядка сортировки? Или знаем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 19:17:09 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Знаем. есть каталог услуг. Там я доделал область, и остальное осталось - каталоги (каталог услуг). Позицию в каталоге покупают за сколько хотят (свободные торги) или с помощью рейтинга (репосты - "рекомендации"), но рейтинг в сотни меньше имеет веса. Юзер заходит в каталог, выбирает область, потом вид деятельности и там уже видит всех отсортированных. По цене не буду делать сортировку. Для этого есть отдельно поиск с фильтром. важно чтоб не потеряться в поисковике. В яндекса и гугла правила хоть очень простые, но строгие. Можно маленькую деталь опустить, а она оказывается очень важная. По этому очень осторожно и дипломатично нужно с кодом обходиться - с уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 19:23:50 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Андрей159ЗнаемНу тогда, наверное, предрассчитанное поле с сортировкой будет оптимальным выходом. По крайней мере, если у вас показ новостей(услуг) происходит намного чаще, чем меняется этот порядок сортировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 19:30:38 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Андрей159, в наших проектах мы храним предыдущий и последующий индекс в самой записи (товар, страница, новость и т.п.) эти номера проставляются нормализатором у нас есть отдельный нормализатор (ну типа обработчик) который запускаем и он проставляет все эти номера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 19:41:35 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
LumixАндрей159, в наших проектах мы храним предыдущий и последующий индекс в самой записи (товар, страница, новость и т.п.) эти номера проставляются нормализатором у нас есть отдельный нормализатор (ну типа обработчик) который запускаем и он проставляет все эти номера "Нормализатор" это что ? Типа авторская программа на другом языке, которая работает отдаленно на компе и имеет всю копию базы данных ? У меня есть такая на Visual Basic 6 + база данных Access. Тоже думал над этим. И комп на станции круглосуточно работает, можно нагрузить. Вероятно даже что так будет эффективней. Но пометку изменений все же буду оставлять в качестве заявления что нужно переиндексировать. Вы мне подкинули идею ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 19:54:27 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Андрей159Типа авторская программа на другом языке, которая работает отдаленно на компе и имеет всю копию базы данных ? У меня есть такая на Visual Basic 6 + база данных Access. Тоже думал над этим. И комп на станции круглосуточно работает, можно нагрузить. Вероятно даже что так будет эффективней. Но пометку изменений все же буду оставлять в качестве заявления что нужно переиндексировать. Вы мне подкинули идею что-то вы какие-то страшные вещи рассказываете... какие-то копии базы данных... какой-то аксесс... я прям весь съежился... мы вроде на форуме мускула находимся.... какой нафиг аксесс?.... не требуется никаких копий и никаких нагрузок там нет просто обычный двухпроходный скрипт написанный на коленке за 5 минут 1) за первый проход достаем список айдишников селектом, который содержит условия (всякие там выкинуть скрытые записи, выкинуть какие-то статусы и т.п.), короче получаем некий список номеров типа такого 2134, 2135, 2138, 2146, 2180, 2182 ... 2) затем преобразуем его список тасков такого вида (2134, 0, 2135), (2135, 2134, 2138), (2138, 2135, 2146), (2146, 2138, 2180) ... 3) и фигачим этим списком отдельными апдейтами по каждой записи Код: sql 1. 2. 3. если сделаете фильтр по дате, чтобы нормализатор проапдейтил только новости за последнюю неделю, то он проапдейтит их за минуту... без всяких нагрузок... в админке это всего лишь одна кнопка нажал её и через 2 минуты она завершила работу... вот и вся "песня" PS. хотя чую щас набегут тут спецы и будут призывать сначала "изучать предметную область" )))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 20:49:05 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Андрей159, в лоб, пронумеруйте Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 21:33:00 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Lumixхотя чую щас набегут тут спецы и будут призывать сначала "изучать предметную область"да ладно, не настолько уж они и кровожадные :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 22:15:44 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Кстати, для нумерации записей в табличке у нас пост есть в FAQ-е - 7489347 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 22:16:53 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Спасибо что уделили мне столько времени. Поделюсь программным кодом, которым можно на расстоянии управлять базой MySQL из своего приложения. В принципе не важно на чем вы программируете. Мне по душе просто VB6. В дебугере поэксперементировал без риска, и всяких неудобств. Ну и не нужно было даже промежуточного id для такой задачи. Добавил дополнительные поля: ид_предыдущей_страницы и ид_следующий. Вот уже работающий код по индексации Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. Теперь, зная что он работает, переделаю его на PHP. нумеровать в лоб - не знал такого. Очень интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 22:26:37 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Андрей159Ну и не нужно было даже промежуточного id для такой задачи. Добавил дополнительные поля: ид_предыдущей_страницы и ид_следующий.Ну вот, а могли бы обойтись одним полем. И его можно было бы использовать для сортировки в запросе из начального поста. Впрочем, дело хозяйское. Делайте как удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 22:31:05 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Андрей159нумеровать в лоб - не знал такого. Очень интересно.Кстати, по тому же принципу можно и два поля заполнять. Понадобится всего два запроса вместо пачки. Теоретически можно и в один запихать, но работать он будет сильно дольше, так что смысла нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 22:34:12 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Ну вот. Может кто захочет тоже такой фигней пострадать. Перевел код в PHP. Все работает Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 23:30:43 |
|
||
|
Следующая и предыдущая страница
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Мог напутать в деталях, вот PoC - http://sqlfiddle.com/#!9/eb3de8/1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2015, 01:11:44 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39064430&tid=1832668]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 312ms |

| 0 / 0 |
