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 :: Помогите с навигацией на страницу вперёд/назад

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Phpnoobu
Отправлено: 06 Августа, 2016 - 18:38:26
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




Доброго времени суток,

Подскажите, пожалуйста, как реализовать навигацию на страницу вперёд и назад.

Изначальные данные:
1)Есть массив с id всех страниц, также являющихся ссылкой на сайте (то есть read/1 или read/51)
Array
(
[0] => Array
(
[id] => 4
[header] => Глава 1.
)

[1] => Array
(
[id] => 51
[header] => Глава 2.
)

[2] => Array
(
[id] => 72
[header] => Глава 3.
)
[3] => Array
(
[id] => 111
[header] => Глава 4.
)

)

2)Есть id текущей страницы: 51

Проблема в том, что id глав не имеют чёткого увеличения +-1, вот и не могу никак сообразить, как это дело реализовать.


--------------------------------
Если совсем коротко, то есть массив:
id=4
id=7
id=11
id=222
id=3333
id=77773

есть текущее значение 11

нужно получить значения 7 и 222
--------------------------------

P.S. Можно кидать тапками.

(Отредактировано автором: 06 Августа, 2016 - 19:03:07)

 
 Top
Gunirs
Отправлено: 06 Августа, 2016 - 18:44:46
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2016  
Откуда: Россия


Помог: 0 раз(а)




Запутал меня совсем Не понял
С помощью переменной $_SERVER['HTTP_REFERER'] можно получить информацию. А именно, с какой страницы пришёл пользователь. Пробовал использовать это?

(Отредактировано автором: 06 Августа, 2016 - 18:47:40)

 
My status
 Top
Phpnoobu
Отправлено: 06 Августа, 2016 - 18:55:03
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




[quote=Gunirs][/quote]

У меня есть это значение Улыбка


Есть id текущей страницы (например 51)

Есть массив с id всех остальных страниц (например 5, 12, 15, 22, 51, 66 и т.д.) - то есть 1 страница с id = 5, вторая с 12.

Нужно находясь на 51 странице получить переменные содержащие id 22(назад) и id 66(вперед).
 
 Top
Gunirs
Отправлено: 06 Августа, 2016 - 19:02:51
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2016  
Откуда: Россия


Помог: 0 раз(а)




Phpnoobu пишет:
Gunirs пишет:


У меня есть это значение Улыбка


Есть id текущей страницы (например 51)

Есть массив с id всех остальных страниц (например 5, 12, 15, 22, 51, 66 и т.д.) - то есть 1 страница с id = 5, вторая с 12.

Нужно находясь на 51 странице получить переменные содержащие id 22(назад) и id 66(вперед).

Я чуть-чуть не понял. Тебе нужно получить переменные с другой страницы?
 
My status
 Top
Phpnoobu
Отправлено: 06 Августа, 2016 - 19:06:08
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




Gunirs пишет:
Phpnoobu пишет:
Gunirs пишет:


У меня есть это значение Улыбка


Есть id текущей страницы (например 51)

Есть массив с id всех остальных страниц (например 5, 12, 15, 22, 51, 66 и т.д.) - то есть 1 страница с id = 5, вторая с 12.

Нужно находясь на 51 странице получить переменные содержащие id 22(назад) и id 66(вперед).

Я чуть-чуть не понял. Тебе нужно получить переменные с другой страницы?


Сейчас пользователь находиться на странице www[dot]read[dot]com/readbook/11/7 (где 7 - id главы)

Следующая глава находится по адресу:
www[dot]read[dot]com/readbook/11/32

Предыдущая:
www[dot]read[dot]com/readbook/11/3

Нужно получить числа 3 и 32.

При этом есть массив с id всех страниц и текущей.
 
 Top
vintag
Отправлено: 06 Августа, 2016 - 20:57:38
Post Id



Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




Если я правильно понимаю у тебя кнопки на странице, ну и вбивай в них ид, а потом вытягивай. также массив на явку для кнопок вперед назад можно тупо передать через вывод.
echo "<SCRIPT>";
.................
echo "var ..........
echo "v[i]=".$t[$j].";"
.......................
......................
...............
.................
 
 Top
Phpnoobu
Отправлено: 06 Августа, 2016 - 21:13:34
Post Id


Новичок


Покинул форум
Сообщений всего: 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.
)

[1] => Array
(
[id] => 5
[header] => Глава 2.
)

[2] => Array
(
[id] => 12
[header] => Глава 3.
)
[3] => Array
(
[id] => 44
[header] => Глава 4.
)
)

И динамическое(ключевое) значение одного из элементов массива (например id->5)

Нужно получить значения id массивов выши и ниже ключевого, то есть 4 и 12 в виде обычной переменной.
 
 Top
miketomlin
Отправлено: 06 Августа, 2016 - 22:44:52
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




Phpnoobu, откуда этот массив берется? Если из БД, то лучше для навигации перейти на обычную последовательную нумерацию, сохраняя реальные id только для непосредственного доступа к данным, ассоциированным с этими id. Даже если у вас массив в файлах, включая исходники, думаю, следует поступить точно так же, как и в пред. случае, тем более что у вас двумерный с послед. нумерацией строк (не нужно даже выполнять перенумерацию элементов массива).

если id-шники должны быть отражены в ссылках, тут немного сложнее. При работе с БД для этого используются спец. запросы на выбор объектов с соседними несмежными id. Если показанный вами массив находится прямо в исходниках, тут нет никаких проблем: выбираете соседние элементы, используя последовательные индексы, а потом уже смотрите на их id.

В послед случае. есть и более оригинальные способы решения при условии, что у вас из фактических данных только id и header. Можно использовать одномерный!!! массив заголовков, опираясь на тот факт, что в php у элементов массива могут одновременно существовать и числовые и символьные индексы (ключи). id-шники делаете символьными ключами, добавляя к ним какой-нибудь не цифровой префикс (хотя цифру 0 в качестве префикса, кажется, можно использовать), чтобы они не превращались в числовые. Получится, что послед. номера и id-шники с префиксами будут ключами, а заголовки – значениями одномерного массива.
(Добавление)
P.S. Также можно отдельно построить массив соответствия послед. номеров и id-шников и использовать его для получения одного из другого.
 
 Top
Phpnoobu
Отправлено: 06 Августа, 2016 - 22:48:36
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




miketomlin пишет:
Phpnoobu, откуда этот массив берется? Если из БД, то лучше для навигации перейти на обычную последовательную нумерацию, сохраняя реальные id только для непосредственного доступа к данным, ассоциированным с этими id. Даже если у вас массив в файлах, включая исходники, думаю, следует поступить точно так же, как и в пред. случае, тем более что у вас двумерный с послед. нумерацией строк (не нужно даже выполнять перенумерацию элементов массива).

если id-шники должны быть отражены в ссылках, тут немного сложнее. При работе с БД для этого используются спец. запросы на выбор объектов с соседними несмежными id. Если показанный вами массив находится прямо в исходниках, тут нет никаких проблем: выбираете соседние элементы, используя последовательные индексы, а потом уже смотрите на их id.

В послед случае. есть и более оригинальные способы решения при условии, что у вас из фактических данных только id и header. Можно использовать одномерный!!! массив заголовков, опираясь на тот факт, что в php у элементов массива могут одновременно существовать и числовые и символьные индексы (ключи). id-шники делаете символьными ключами, добавляя к ним какой-нибудь не цифровой префикс (хотя цифру 0 в качестве префикса, кажется, можно использовать), чтобы они не превращались в числовые. Получится, что послед. номера и id-шники с префиксами будут ключами, а заголовки – значениями одномерного массива.


Подскажите, пожалуйста, как это сделать (выбираете соседние элементы, используя последовательные индексы, а потом уже смотрите на их id.) уже битый час мучаюсь с prev, next функциями, но всё никак не вытяну из массива этот чертов id на индекс выше и ниже.
 
 Top
miketomlin
Отправлено: 06 Августа, 2016 - 22:52:16
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




$a[i-1]['id']

$a[i+1]['id']

Не?
 
 Top
Phpnoobu
Отправлено: 06 Августа, 2016 - 22:58:47
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




miketomlin пишет:
$a[i-1]['id']

$a[i+1]['id']

Не?


Спасибо большое. Я просто не знал, что таким образом[i+1]['id'] можно вытянуть отличную от первой, строку массива, дальше сам разберусь.
 
 Top
miketomlin
Отправлено: 06 Августа, 2016 - 23:00:33
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




Проблема в том, что чтобы получить тек. линейный индекс i по id в ссылке, нужно шерстить массив, поэтому я стока букв и написал в первом моем посте, чтобы объяснить, что лучше использовать др. подход.
 
 Top
Phpnoobu
Отправлено: 06 Августа, 2016 - 23:06:03
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




miketomlin пишет:
Проблема в том, что чтобы получить тек. линейный индекс i по id в ссылке, нужно шерстить массив, поэтому я стока букв и написал в первом моем посте, чтобы объяснить, что лучше использовать др. подход.


Блин, а мне казалось, что была функция, которая выводит линейный индекс при поиске по любому значению в массиве Недовольство, огорчение

Тогда действительно подумаю насчёт добавления в базу дополнительных последовательных индексов глав 1 книги.
 
 Top
miketomlin
Отправлено: 06 Августа, 2016 - 23:07:43
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




Функция есть, но сам подход затратный.
 
 Top
Phpnoobu
Отправлено: 06 Августа, 2016 - 23:13:45
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




miketomlin пишет:
Функция есть, но сам подход затратный.


Разве может быть затратным поиск в массиве состоящем из 1-20 строк (по 2 столбца в каждом)?

Немного не понимаю вас, что является затратным.

p.s> PHP только изучаю, так что могу сильно тупить Ха-ха
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB