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. leshiy - 25 Сентября, 2018 - 11:42:00 - перейти к сообщению
Попробовал вывести последние просмотренные записи посетителями сайта с помощью COOKIE и набросал вот такой вот код:
Добавление COOKIE.
PHP:
скопировать код в буфер обмена
  1. $ar='/'.$vid["id"].'/';
  2. if(!isset($_COOKIE["__rol"])){setcookie('__rol', $ar);}elseif(isset($_COOKIE["__rol"])){
  3. $findme='/'.$vid["id"].'/';
  4. $pos=strpos($_COOKIE["__rol"],$findme);
  5. if($pos===false){$dob_cok=$ar.$_COOKIE["__rol"];
  6. setcookie('__rol', $dob_cok);}}
  7.  

Вывод данных из COOKIE
PHP:
скопировать код в буфер обмена
  1. if(preg_match_all('~/(.*?)/~', $_COOKIE["__rol"], $matches)){
  2. $vv_r='';
  3.     foreach ($matches[1] as $i => $post){
  4. $vv_r.=$post.',';
  5. }}
  6. if ($vv_r{strlen($vv_r)-1} == ',') {
  7.    $v_rr = substr($vv_r,0,-1);
  8. }
  9. $sql="SELECT * FROM date WHERE id in (".$v_rr.")";
  10.  

Но вот как их отсортировать не пойму (т.е. в куки помимо id записи нужно добавлять и дату, но вот как наиболее правильно это сделать и как их сортировать в SQL)?
2. miketomlin - 25 Сентября, 2018 - 11:54:25 - перейти к сообщению
Просто используйте значение куки, как очередь.
(Добавление)
Т.е. добавляйте последнюю просмотренную запись в начало или в конец списка, при необходимости урезая его размер, чтобы не было «неограниченного» роста.
3. leshiy - 25 Сентября, 2018 - 12:19:26 - перейти к сообщению
miketomlin пишет:
Просто используйте значение куки, как очередь.
(Добавление)
Т.е. добавляйте последнюю просмотренную запись в начало или в конец списка, при необходимости урезая его размер, чтобы не было «неограниченного» роста.


Я пробовал добавлять последнюю просмотренную запись в начало куки но дело в том что
PHP:
скопировать код в буфер обмена
  1. $sql="SELECT * FROM date WHERE id in (".$v_rr.")";
  2.  

сортирует их по id из бд.
4. miketomlin - 25 Сентября, 2018 - 19:58:27 - перейти к сообщению
Используйте эту выборку только для вывода, а список id в куке меняйте так, как я сказал. И не забудьте убирать дубликаты из этого списка (или по крайней мере не «пихайте» дубликаты в запрос).
5. broshurkaplus - 01 Октября, 2018 - 19:52:16 - перейти к сообщению
не понял про
Цитата:
сортирует их по id из бд


вижу так:
храним в куки массив как строку
при новом просмотре проверяем есть ли в массиве
- если есть ничего - не делаем
- если нет - удаляем последний элемент, новый в начало массива
для выбора из бд берем ключи и подставляем в in (в зависимости от порядка следования ид в бд можно сортирнуть ключи), получив данные присваиваем их по ключам начального массива -> получаем циклом вывод в порядке просмотра

 

Powered by ExBB FM 1.0 RC1