Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Помогите с навигацией на страницу вперёд/назад
Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016
Помог: 0 раз(а)
Доброго времени суток,
Подскажите, пожалуйста, как реализовать навигацию на страницу вперёд и назад.
Изначальные данные:
1)Есть массив с id всех страниц, также являющихся ссылкой на сайте (то есть read/1 или read/51)
Array
(
[0] => Array
(
[id] => 4
[header] => Глава 1.
)
Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2016 Откуда: Россия
Помог: 0 раз(а)
Запутал меня совсем
С помощью переменной $_SERVER['HTTP_REFERER'] можно получить информацию. А именно, с какой страницы пришёл пользователь. Пробовал использовать это?
Покинул форум
Сообщений всего: 35
Дата рег-ции: Нояб. 2015
Помог: 0 раз(а)
Если я правильно понимаю у тебя кнопки на странице, ну и вбивай в них ид, а потом вытягивай. также массив на явку для кнопок вперед назад можно тупо передать через вывод.
echo "<SCRIPT>";
.................
echo "var ..........
echo "v[i]=".$t[$j].";"
.......................
......................
...............
.................
Phpnoobu
Отправлено: 06 Августа, 2016 - 21:13:34
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016
Помог: 0 раз(а)
vintag пишет:
Если я правильно понимаю у тебя кнопки на странице, ну и вбивай в них ид, а потом вытягивай. также массив на явку для кнопок вперед назад можно тупо передать через вывод.
echo "<SCRIPT>";
.................
echo "var ..........
echo "v=".$t[$j].";"
.......................
......................
...............
.................
Проблема в том, что чтобы вбить айди в кнопку, нужно его сначала определить, а как это сделать, я не знаю.
[i](Добавление)
Мне нужно что-то типа этого:
if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a>
<a href= ./page?page='. ($page - 1) .'><</a> ';
только для случаев когда id между главами не +-1 (Добавление)
Может я плохо объясняю, может так будет понятнее:
Есть динамический массив:
Array
(
[0] => Array
(
[id] => 4
[header] => Глава 1.
)
И динамическое(ключевое) значение одного из элементов массива (например id->5)
Нужно получить значения id массивов выши и ниже ключевого, то есть 4 и 12 в виде обычной переменной.
miketomlin
Отправлено: 06 Августа, 2016 - 22:44:52
Частый гость
Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016
Помог: 5 раз(а)
Phpnoobu, откуда этот массив берется? Если из БД, то лучше для навигации перейти на обычную последовательную нумерацию, сохраняя реальные id только для непосредственного доступа к данным, ассоциированным с этими id. Даже если у вас массив в файлах, включая исходники, думаю, следует поступить точно так же, как и в пред. случае, тем более что у вас двумерный с послед. нумерацией строк (не нужно даже выполнять перенумерацию элементов массива).
если id-шники должны быть отражены в ссылках, тут немного сложнее. При работе с БД для этого используются спец. запросы на выбор объектов с соседними несмежными id. Если показанный вами массив находится прямо в исходниках, тут нет никаких проблем: выбираете соседние элементы, используя последовательные индексы, а потом уже смотрите на их id.
В послед случае. есть и более оригинальные способы решения при условии, что у вас из фактических данных только id и header. Можно использовать одномерный!!! массив заголовков, опираясь на тот факт, что в php у элементов массива могут одновременно существовать и числовые и символьные индексы (ключи). id-шники делаете символьными ключами, добавляя к ним какой-нибудь не цифровой префикс (хотя цифру 0 в качестве префикса, кажется, можно использовать), чтобы они не превращались в числовые. Получится, что послед. номера и id-шники с префиксами будут ключами, а заголовки – значениями одномерного массива. (Добавление)
P.S. Также можно отдельно построить массив соответствия послед. номеров и id-шников и использовать его для получения одного из другого.
Phpnoobu
Отправлено: 06 Августа, 2016 - 22:48:36
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016
Помог: 0 раз(а)
miketomlin пишет:
Phpnoobu, откуда этот массив берется? Если из БД, то лучше для навигации перейти на обычную последовательную нумерацию, сохраняя реальные id только для непосредственного доступа к данным, ассоциированным с этими id. Даже если у вас массив в файлах, включая исходники, думаю, следует поступить точно так же, как и в пред. случае, тем более что у вас двумерный с послед. нумерацией строк (не нужно даже выполнять перенумерацию элементов массива).
если id-шники должны быть отражены в ссылках, тут немного сложнее. При работе с БД для этого используются спец. запросы на выбор объектов с соседними несмежными id. Если показанный вами массив находится прямо в исходниках, тут нет никаких проблем: выбираете соседние элементы, используя последовательные индексы, а потом уже смотрите на их id.
В послед случае. есть и более оригинальные способы решения при условии, что у вас из фактических данных только id и header. Можно использовать одномерный!!! массив заголовков, опираясь на тот факт, что в php у элементов массива могут одновременно существовать и числовые и символьные индексы (ключи). id-шники делаете символьными ключами, добавляя к ним какой-нибудь не цифровой префикс (хотя цифру 0 в качестве префикса, кажется, можно использовать), чтобы они не превращались в числовые. Получится, что послед. номера и id-шники с префиксами будут ключами, а заголовки – значениями одномерного массива.
Подскажите, пожалуйста, как это сделать (выбираете соседние элементы, используя последовательные индексы, а потом уже смотрите на их id.) уже битый час мучаюсь с prev, next функциями, но всё никак не вытяну из массива этот чертов id на индекс выше и ниже.
miketomlin
Отправлено: 06 Августа, 2016 - 22:52:16
Частый гость
Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016
Помог: 5 раз(а)
$a[i-1]['id']
$a[i+1]['id']
Не?
Phpnoobu
Отправлено: 06 Августа, 2016 - 22:58:47
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016
Помог: 0 раз(а)
miketomlin пишет:
$a[i-1]['id']
$a[i+1]['id']
Не?
Спасибо большое. Я просто не знал, что таким образом[i+1]['id'] можно вытянуть отличную от первой, строку массива, дальше сам разберусь.
miketomlin
Отправлено: 06 Августа, 2016 - 23:00:33
Частый гость
Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016
Помог: 5 раз(а)
Проблема в том, что чтобы получить тек. линейный индекс i по id в ссылке, нужно шерстить массив, поэтому я стока букв и написал в первом моем посте, чтобы объяснить, что лучше использовать др. подход.
Phpnoobu
Отправлено: 06 Августа, 2016 - 23:06:03
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016
Помог: 0 раз(а)
miketomlin пишет:
Проблема в том, что чтобы получить тек. линейный индекс i по id в ссылке, нужно шерстить массив, поэтому я стока букв и написал в первом моем посте, чтобы объяснить, что лучше использовать др. подход.
Блин, а мне казалось, что была функция, которая выводит линейный индекс при поиске по любому значению в массиве
Тогда действительно подумаю насчёт добавления в базу дополнительных последовательных индексов глав 1 книги.
miketomlin
Отправлено: 06 Августа, 2016 - 23:07:43
Частый гость
Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016
Помог: 5 раз(а)
Функция есть, но сам подход затратный.
Phpnoobu
Отправлено: 06 Августа, 2016 - 23:13:45
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016
Помог: 0 раз(а)
miketomlin пишет:
Функция есть, но сам подход затратный.
Разве может быть затратным поиск в массиве состоящем из 1-20 строк (по 2 столбца в каждом)?
Немного не понимаю вас, что является затратным.
p.s> PHP только изучаю, так что могу сильно тупить
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.