[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите со ссылками
Winston
Написал страничку на которой выводятся краткое описание контента и ссылка на него например view_content?id=2, а внутри этого файла хочу создать две ссылки, где одна при нажатии будет бросать назад, а вторая вперед на один то есть id+1 или -1
Написал такой код:

PHP
<?php echo $_SERVER["HTTP_REFERER"];


но он бросает на ту страницу с какой пришел. Подскажите какой код нужен для реализации того что я задумал.



Спустя 37 минут, 24 секунды (5.07.2009 - 16:59) kirik написал(а):
так?
PHP
echo '/view_content?id='.((int) $_GET['id'] + 1);

Спустя 17 минут, 6 секунд (5.07.2009 - 17:16) Winston написал(а):
Цитата (kirik @ 5.07.2009 - 16:59)
так?
PHP
echo '/view_content?id='.((int) $_GET['id'] + 1);

Я сделал как вы написали, только добавил этот код в ссылку но при нажатии на нее ничего не происходит

PHP
<a href='<? '/viev_content?id='.((int) $_GET['id] + 1);?>

Спустя 6 минут, 43 секунды (5.07.2009 - 17:23) Krevedko написал(а):
а когда наводишь на ссылку что показывает ?

Спустя 5 минут, 52 секунды (5.07.2009 - 17:29) kirik написал(а):
Цитата (PHPprogramer @ 5.07.2009 - 09:16)
только добавил этот код в ссылку но при нажатии на нее ничего не происходит

Не правильно написал
PHP
<a href="/viev_content?id=<?=((int) $_GET['id'] + 1)?>">тыц</a>


UPD
может не работать из-за настройки в php.ini, тогда так:
PHP
<a href="/viev_content?id=<?php echo ((int) $_GET['id'] + 1)?>">тыц</a>

Спустя 20 минут, 24 секунды (5.07.2009 - 17:49) Winston написал(а):
kirik большое тебе спасибо smile.gif все работает biggrin.gif только перед view слеш не нужен.

Спустя 32 секунды (5.07.2009 - 17:50) kirik написал(а):
Цитата (PHPprogramer @ 5.07.2009 - 09:49)
только перед view слеш не нужен.

ну смотри smile.gif

Спустя 2 часа, 46 минут, 52 секунды (5.07.2009 - 20:36) Winston написал(а):
С этим разобрался, теперь другой вопрос, когда я нажимая NEXT меня бросает на одну в перед, то что мне надо smile.gif, но в базе как всегда стоить "Первичный ключ" и вот если например у меня есть id'ишники 1,2,3,4,5 я жму NEXT и прохожу через каждый из них, но вот если я удалил из базы инфу с id'шками 3,4 и опять бы проходил с начала то мне бы все равно показало бы страницу с id 3 и 4 но она бы ничего не отображала, была бы пустой. Вопрос:
как сделать проверку что бы меня перебрасывало с 2 на 5 id если пустые или не существуют 3 и 4. Надеюсь вы поняли мой вопрос ? huh.gif

Спустя 8 минут, 8 секунд (5.07.2009 - 20:45) Krevedko написал(а):
кстати действительно любопытно. Тоже бы послушал ув. экспертов.

Спустя 10 минут, 49 секунд (5.07.2009 - 20:55) kirik написал(а):
Цитата (PHPprogramer @ 5.07.2009 - 12:36)
Надеюсь вы поняли мой вопрос ?

я тоже задавался таким вопросом smile.gif

Самый простой вариант использовать смещение:
SQL
SELECT * FROM `table` ORDER BY `id` LIMIT 4, 1

где `id` - собственно (уникальное) поле с id'шниками, "4" - это "страница" (точнее смещение относительно первой записи), "1" - нам нужна только одна запись.
Только не забывай про возможность sql инъекции.

По-сложнее - нужно держать где-то все id'шники, и перемещаться по этому массиву.

Спустя 1 час, 43 минуты, 14 секунд (5.07.2009 - 22:39) glock18 написал(а):
SQL
SELECT * FROM `table` ORDER BY `id` LIMIT 4, 1


не, так не надо. можно проще и лучше:

SQL
SELECT MIN(id) FROM `table` WHERE id > 2


либо

SQL
SELECT `id` FROM `table` WHERE id > 2 ORDER BY id ASC LIMIT 1;


какой из них быстрее будет не знаю. второй точно быстрый, а первый чуть короче, но может не такой быстрый будет из-за MIN.

UPD: "2" в запросах - это текущий id, а возвращен будет следующий.

UPD2: хотя может не лучше... ненамного. вариант Кирика тоже хороший, виноват, сначала невнимательно запрос проглядел unsure.gif

Спустя 20 минут, 27 секунд (5.07.2009 - 22:59) kirik написал(а):
glock18
первый запрос быстрее будет чем второй.

Но для нужд автора тогда придется использовать дополнительный запрос, который будет возвращать следующий ID. В то время как с использованием LIMIT'а со смещением только один.. Выбор за ТС smile.gif

Спустя 3 минуты, 32 секунды (5.07.2009 - 23:03) kirik написал(а):
Цитата (glock18 @ 5.07.2009 - 14:39)
хотя может не лучше... ненамного.

Эксплэйн у первого (твоего) запроса красивый smile.gif Поэтому тут уже не особо разницы.. Или два простых запроса, или один по-сложнее.. Сходу сложно сказать какой будет быстрее, на практике нужно проверять.

Спустя 9 минут, 24 секунды (5.07.2009 - 23:12) sergeiss написал(а):
"Мы пойдем другим путём" (с) ВИЛ smile.gif

Почему бы не сделать более универсальную ссылку типа такой (25 - это текущий id)
SQL
<a href="view_content.php?id=25&next"> - для перехода вперед и
<a href="view_content.php?id=25&previous"> - для перехода назад

Что это даст:
1. Текущий id известен, поэтому мы просто "тупо" его указываем. Но мы не делаем лишних запросов к БД, не тратим время и ресурсы на получение ссылок, которыми пользователь, может быть, и не воспользуется. Потому что иначе нужно будет найти два id: предыдущий и следующий. А это один лишний запрос.
2. Не парим себе мозг (когда это не нужно) тем, какие id есть, а каких нету. Нужные вычисления делаются только один раз, когда юзер в явном виде укажет, куда же он хочет перейти.
А вот когда юзер указал, что он хочет, то тогда уже можно использовать какие-либо из указанных ранее запросов.

Спустя 30 минут, 51 секунда (5.07.2009 - 23:43) kirik написал(а):
Хорошее решение! Очень даже оптимальное smile.gif
Быстрый ответ:

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