Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Доброго времени суток. Может быть кто знает как сделать Поочерёдный показ текста по списку из базы данных в строгом порядке?
Тоесть, человек переходит на любой файл php и у него появляется текст1. В базу данных временно добавляется инфа что этот текст просмотрен. И при следующем открытии файла показывается текс2. Эти тексты берутся из базы данных. И когда база данных заканчивается круг начинается заново с текста1
Желательно внедрить в этот код:
Неактивен
А в чем логика строгого порядка? Если между заходами первого клиента зайдет другой, что он должен увидеть?
Неактивен
rgbeast написал:
А в чем логика строгого порядка? Если между заходами первого клиента зайдет другой, что он должен увидеть?
если просмотр остановился на тексте 2, то должен увидеть текст 3
Неактивен
Порядок нужно помнить для каждого пользователя или один раз для сайта? Если общий порядок, то нужно сохранять только id.
Неактивен
например пользователь1 увидел текст1, тогда пользователь2 увидит текст2 и т.д.
Неактивен
по этому и нужна запись в базу, а не в куки
Неактивен
Схема решения примерно такая. Нужно создать отдельную таблицу
Неактивен
rgbeast написал:
Схема решения примерно такая. Нужно создать отдельную таблицу
CREATE TABLE posts_position (position int(11));
Затем в нее вставить одно значение - 0.INSERT INTO posts_position VALUES (0);
В ней всегда будет один элемент.
Основной запрос SQL заменить на такой:$sql = "SELECT p.* FROM `posts` p, posts_position pp where `p.post_status` = 'publish' AND p.ID>pp.position ORDER BY p.ID ASC LIMIT 1";
Это обеспечит выбор одной записи с минимальным ID, превышающим хранимое значение.
После этого"UPDATE posts_position SET position=".$row['ID']
благодарю, щас буду пробовать
Неактивен
Забыл сказать про случай, когда дойдет до конца. Нужно поставить условие, что если запрос не вернет записей, сбросить положение в 0:
Неактивен
rgbeast написал:
Схема решения примерно такая. Нужно создать отдельную таблицу
CREATE TABLE posts_position (position int(11));
Затем в нее вставить одно значение - 0.INSERT INTO posts_position VALUES (0);
В ней всегда будет один элемент.
Основной запрос SQL заменить на такой:$sql = "SELECT p.* FROM `posts` p, posts_position pp where `p.post_status` = 'publish' AND p.ID>pp.position ORDER BY p.ID ASC LIMIT 1";
Это обеспечит выбор одной записи с минимальным ID, превышающим хранимое значение.
После этого"UPDATE posts_position SET position=".$row['ID']
Блин не срабатывает почему то (( может я не туда прописываю. Если не трудно, вставь это всё в мой код.
Буду благодарен.
Неактивен
$sql = "SELECT p.* FROM `posts` p, posts_position pp where `p.post_status` = 'publish' AND p.ID>pp.position ORDER BY p.ID ASC LIMIT 1"; заменил и уже после этого должно было начать работать, но увы...
Неактивен
вставлять в код php - за пределами тематики форума
Неактивен
rgbeast написал:
вставлять в код php - за пределами тематики форума
Ок, понимаю. Но факт в том что не работает предложенный вариант. Делал как Вы и говорили.
Неактивен
Выкладывайте код и текст ошибки, которая возникает.
Неактивен
rgbeast написал:
Выкладывайте код и текст ошибки, которая возникает.
Отредактированно Donotlie (20.04.2014 14:12:54)
Неактивен
Замените
Неактивен
rgbeast написал:
Замените
$query = mysql_query($sql);
на$query = mysql_query($sql) or die(mysql_error());
В запросе замените `p.post_status` на p.`post_status`
Спасибо, заработало. p. надо удалить. Только немного не понятно с
Отредактированно Donotlie (20.04.2014 17:57:04)
Неактивен
Все проблемы в синтаксисе PHP/MySQL. Вам поможет книга Харриса PHP/MySQL для начинающих.
Неактивен
rgbeast написал:
Все проблемы в синтаксисе PHP/MySQL. Вам поможет книга Харриса PHP/MySQL для начинающих.
понятно - надоел)) Ладно, спасибо и на этом. Дальше уж как нибудь сам)
Неактивен
Страниц: 1