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
Форумы портала PHP.SU :: Версия для печати :: передача параметра из БД между скриптами
Форумы портала PHP.SU » » Вопросы новичков » передача параметра из БД между скриптами

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

1. Perun - 06 Марта, 2017 - 15:32:01 - перейти к сообщению
Есть блок вывода новостей. Для каждой новости есть кнопочка для перехода к полной новости. У меня дилемма, откуда правильно,лучше получать эту самую полную новость.
У меня навскидку варианты:

1. Передавать по клику кнопки через GET 'id' конкретной новости. делать запрос в БД по id, затем выводить полученную из БД новость на отдельной страничке, куда передавали id.

2. При выводе всего списка новостей, изначально запоминать и полную новость в какой нибудь сессионной переменной и на страничке конкретной новости читать полную новость из сессионной переменной.

3. Вариация второго варианта - только передавать полную новость не через сессионную переменную, а через POST форму в скрытом поле передавать полную новость из изначального запроса, который был выполнен для вывода списка всех новостей на страничку конкретной новости.
2. valentinnew - 06 Марта, 2017 - 15:42:47 - перейти к сообщению
первый вариант.
Он хорош тем, что по данному урлу будет доступна только одна новость.
В сессии эти данные нельзя хранить. Если ты откроешь в одной вкладке одну новость, потом в другой - другую, потом обновишь первую, то там будет отображаться вторая новость => Нелогичное поведение.
3. Perun - 06 Марта, 2017 - 15:53:06 - перейти к сообщению
valentinnew пишет:
Если ты откроешь в одной вкладке одну новость, потом в другой - другую, потом обновишь первую, то там будет отображаться вторая новость => Нелогичное поведение.

Сколько новостей, столько и переменных можно установить
(Добавление)
Первый вариант я и поставил первым, т.к. мне больше нравится.
4. Мелкий - 06 Марта, 2017 - 16:12:26 - перейти к сообщению
Только первый вариант.
Если поток запросов к новости становится существенным... Да просто поставить nginx+memcache (или с редисом) с полностраничным кэшированием для неавторизованных пользователей и всё. Надо быть очень известным сми, чтобы этой связки не хватило. А когда не хватает - они и масштабируются легко.
Ладно, если у вас проблема именно с чтением БД - ставится redis или мемкеш, и часто запрашиваемые данные сперва ищутся там.

Хранить в сессии - только раздувать объём сессии. Больше никакого профита нет.
Передавать постом - бедные пользователи, получить на странице вместо пары десятков аннотаций все полные тексты этих двух десятков новостей. Плюс XSS.
Оба этих способа ладно если бы просто нелогичны - на них нельзя дать ссылку.
5. Perun - 06 Марта, 2017 - 16:30:21 - перейти к сообщению
ОК. Спасибо.

 

Powered by ExBB FM 1.0 RC1