Как сделать ссылку "назад" на странице подробного описания товара?

  • Автор темы Автор темы tend
  • Дата начала Дата начала

tend

Новичок
Как сделать ссылку "назад" на странице подробного описания товара?

Всем привет!
Мне нужно сделать ссылку "назад" на странице подробного описания товара, чтобы возвращаться обратно к списку товаров.
Пример: в базе есть 30 товаров. Есть страница, на которой выводятся названия товаров со ссылками на подробное их описание на новую страницу. Выводится по 10 товаров на странице. Получается (по примеру) 3 страницы: page.php?id=n (n - номер страницы, т.е. 1, 2 или 3). Подробное описание товара находится на странице: info.php?id=n (n - номер товара).
Например, на второй странице (page.php?id=2) человек нашел товар и захотел прочитать его описание. Он заходит на страницу товара (info.php?id=...).
Так вот, мне нужно сделать ссылку "назад", которая будет возвращать человека назад на вторую страницу (page.php?id=2).
Ссылка "javascript:history.back()" не подходит, т.к. на страницу товара (info.php?id=...) могут прийти не только со страницы page.php?id=2, но и с других сайтов, а также поисковиков.
Как это сделать по-другому, чтобы, если даже пришли с другого сайта, ссылка вела на страницу page.php?id=2? Я не знаю, может есть специальные для этого функции или еще чего. Прошу помочь.
 
vasa_c
ты тормоз

-~{}~ 07.07.06 20:52:

tend
для этого надо знать, по какому принципу выводится список
 
Т.е. тебе нужно по номеру товара NN узнать номер страницы на которой он находится? Для этого нужно произвести следующие действия:

1. Узнать сколько товаров отображается _до_ текущего товара;
2. Произвести нехитрые математические действия и получить из этого значения и значения для постраничной навигации номер страницы, которые использовать в параметрах ссылки "Назад".
 
Фанат
В таблице куча товаров разных категорий. При выводе списка выбираются все товары выбранной категории и выводятся по 10 на странице с формированием соответствующих ссылок на остальные страницы. Без всяких наворотов.
Кстати, хотел узнать кое-что по поводу выбора строк. Читал в faq, что база mysql - это свалка данных, нумерации строк нет, и данные выбираются без какого-либо порядка. Я пока новичок, мало знаю. Но немного поэкспериментировал на выводе строк из таблицы - они у меня выбираются в том порядке, в каком были добавлены в базу. Это всегда так? То есть, если этот порядок подходит, сортировать строки при выборе не обязательно?

bgm
да, похожую ситуацию я обдумывал: при загрузке страницы товара определять категорию товара, потом выбирать все товары данной категории, посчитать их общее количество, потом через перебор массива путем for (i=0;...) пройти все эти выбранные строки и найти ту, в которой id товара = id (info.php?id=...) - мы получим i - номер строки, а потом по общему количеству выбранных строк и этому номеру можно будет определить номер страницы.
Но это, как мне кажется, не самый лучший вариант. Мне кажется, что есть проще. При таком подходе и большой базе данных (100000 строк) это было бы значительной нагрузкой, если я правильно понимаю, и я бы лучше просто сделал ссылку не на страницу категории, где находится нужный товар, а просто ссылку на первую страницу данной категории.
Хотя мне так хочется сделать именно на нужную страницу, причем чтобы это делалось просто и в 2-3 действия без всяких переборов.
Профессионалы, помогите, плиз. :)
 
tend
Сортировать надо. Во-первых, только ORDER BY гарантирует неизменность порядка. Во-вторых, так всегда можно одним запросом узнать кол-во записей до заданной (при этом порядке сортировки), что решает 90% искомой задачи. Если в твоем примере сортировка идет по возрастанию id - запрос вообще элементарен: select count(*) from ... where id < ... and category = ...
 
Читал в faq, что база mysql - это свалка данных, нумерации строк нет, и данные выбираются без какого-либо порядка. Я пока новичок, мало знаю. Но немного поэкспериментировал на выводе строк из таблицы - они у меня выбираются в том порядке, в каком были добавлены в базу. Это всегда так? То есть, если этот порядок подходит, сортировать строки при выборе не обязательно?
я правильно понимаю ход твоей мысли, что тебе, как новичку, база сделает поблажку?
 
SelenIT, да, сортировка по id.
Моя интуиция говорила, что ты подскажешь. :)
СПАСИБО ОГРОМНОЕ!
Блин, это ж настолько просто!
SelenIT, поделись, где ты этому научился? :)
В очередной раз удивляюсь простоте и легкости MySQL (когда знаешь возможности, конечно).
 
представляю, если бы все каталоги сортировались по id
телефонная книга, скажем...
очень, очень удобно
 
1. По какому принципу у тебя сортируется (ORDER BY) товар при выводе
1.1 Если у тебя нет принципа сортировки товара, то срочно его придумывай
2. Тот же принцип сортировки применяй для получения количества товаров до товара с выбранным ID (используя COUNT)

Количество действий для получения номера страницы при правильной структуре БД: один SQL запрос и одно математическое выражение.

Что тебе надо читать:
1. Справочное руководство MySQL - http://mysql.com (ключевые слова: SELECT, ORDER BY, COUNT, WHERE)
2. Купи книжку по SQL (к примеру "SQL - 10 минут на урок" Бен Форта)
3. Вообще - посмотри список литературы здесь: http://phpclub.ru/?m=book&s=131
 
я правильно понимаю ход твоей мысли, что тебе, как новичку, база сделает поблажку?
Нет, ход моей мысли был направлен немного не в эту сторону. :)
Я просто думал, что если нет сортировки, то строки выводятся по порядку их добавления в таблицу.
 
Количество действий для получения номера страницы при правильной структуре БД: один SQL запрос и одно математическое выражение.
это только в идеальном случае. когда сортировка идёт по уникальному полю.

-~{}~ 07.07.06 23:47:

Нет, ход моей мысли был направлен немного не в эту сторону.
а, понятно.
то есть, ты прочитал, что строки выводятся без порядка, что база не запоминает, какая строка когда добавлена, но решил, что выводятся по порядку, порядку добавления.
Хорошо у тебя с усвоением прочитанного.
 
Фанат
это только в идеальном случае. когда сортировка идёт по уникальному полю.
для веб-приложений пока не доводилось встречать "хитрых" условий сортировки, которые не могли бы быть описаны одним запросом. представляется, что (пальцем в небо?) таких случаев 99,99 %.
 
напиши запрос, который выведет нужное число при сортировке date,id
 
навскидку что-то а-ля [sql]select count (t2.id) from `table` t1 inner join `table` t2 on t2.date < t1.date or (t2.date = t1.date and t2.id < t1.id) where t1.id = ...[/sql]
 
представляю, если бы все каталоги сортировались по id
телефонная книга, скажем...
очень, очень удобно
Фанат
У тебя 18103 сообщений на форуме, а у меня 11. Ты что хочешь, чтобы я знал столько, сколько и ты?
Я всего несколько дней назад узнал что такое mysql. Так что все ок. Спасибо тебе, буду знать теперь многое про сортировку. :)

bgm
Я сейчас самоучитель Котерова изучаю. Думаю, для начала пойдет. И так не с первого раза пока въезжаю. :)
 
tend
я правильно понял твою мысль, что ты никогда не был в библиотеке?
или не видел классного журнала со списком учеников? не видел ту же телефонную книгу?
для всего этого надо написать много-много сообщений на форуме?

-~{}~ 08.07.06 00:11:

заметь, наше общение продолжается только потому, что ты пытаешься оправдываться ;-)
если уж ты это делаешь, то старайся немного больше думать над своими рпеликами =)
 
Сверху