Как узнать что появилась новая запись в базе mysql и прочитать именно её

Тема в разделе "Как сделать...", создана пользователем karen12, 18 окт 2014.

  1. karen12

    karen12 Постоялец

    Регистр.:
    26 фев 2012
    Сообщения:
    83
    Симпатии:
    1
    Как узнать что появилась новая запись в базе mysql и прочитать именно её? То есть выделить новые записи красным цветом.И после того как была бы нажата на выводимый новый запис оно поменял бы цвет от красного на обычный.
     
  2. mo.Lex

    mo.Lex Создатель

    Регистр.:
    5 окт 2014
    Сообщения:
    13
    Симпатии:
    9
    ВО первых надо логировать айдишники или даты старых записей. Вы не указали в каком виде хранятся у вас данные. Это первое от чего надо отталкиваться. Все остальное - дело техники. К примеру - берем новости, идентификатором может быть дата последнего посещения сайта пользователем - в куках например. И сравнивая эту дату с датами новостей - выводить ему только новые новости. Изменение заголовка тоже надо делать с логированием через куки
     
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Самый простой вариант - создаем в таблице еще 1 колонку тип boolean. (да/нет) с названием "новая новость". Значение по умолчанию - Да.
    При вставке новости в колонку автоматом запишется Да. Т.е. эта новость будет новой. Далее при просмотре новости значение колонки меняется на Нет, т.е. новость устаревает.
    Нужно будет сделать 1 дополнительный mysql запрос, который состояние новости будет менять на Нет при просмотре на нужной странице сайта либо делать триггер, который будет срабатывать на команду SELECT ... FROM...
     
    Шумадан нравится это.
  4. karen12

    karen12 Постоялец

    Регистр.:
    26 фев 2012
    Сообщения:
    83
    Симпатии:
    1
    Ваш вариант мне по душе. Пожалуйста опишите как при просмотре материала изменить значение поля да/нет, то есть отправить перекрестный запрос на update?
     
  5. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    PHP:
    UPDATE nazvanie_tablici SET novay_novost='0' WHERE id_novosti='nomer_novosti'
    nazvanie_tablici - название таблицы в БД
    novay_novost - название колонки в таблице, отвечающей за новая новость или старая.
    id_novosti - название колонки, имеющей уникальный идентификатор. Обычно называется id
    nomer_novosti - номер новости в колонке id_novosti , имеющей какое-то конкретное значения, например 555 , 10324 и т.д.
     
  6. karen12

    karen12 Постоялец

    Регистр.:
    26 фев 2012
    Сообщения:
    83
    Симпатии:
    1
    Да, это код для обновления, а как быть с тем, чтобы нажав на ссылку для вывода данных, колонка novay_novost одновременно обновлялся
    Вывожу данные вот так
    PHP:

    $res 
    mysql_query("SELECT * FROM `reception`  WHERE  `doctor_userid`= '".$_SESSION['id']."'  ORDER BY  `id` DESC LIMIT $start$num");

       while(
    $row mysql_fetch_assoc($res)) {

    echo
    '
    <a  href="doctor/reception_view.php?id='
    .$row["id"].'">  '.$row["text"].'</a>

    '
    ;
              


    }
     
  7. mo.Lex

    mo.Lex Создатель

    Регистр.:
    5 окт 2014
    Сообщения:
    13
    Симпатии:
    9
    Хорошо. Ситуация - я захожу на сайт, выполняется запрос, и новость становиться старой для всех остальных )) должна быть идентификация пользователей же. А как идентифицировать незарегистрированных юзеров без куков?

    просто выполнение ставьте на просмотр полного текста новости
     
  8. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Karen12 дальше пошли вопросы НЕобщего характера. Для ответа на них нужно гораздо больше данных. Структуры таблиц, связи между таблицами, по какому уникальному параметру выбирать новость и т.д. и т.п.
     
  9. mo.Lex

    mo.Lex Создатель

    Регистр.:
    5 окт 2014
    Сообщения:
    13
    Симпатии:
    9
    Карен, а можно узнать вообще цель работы? Это для личного пользования только для вас, или для всех посетителей сайта?

    PHP:
    $res mysql_query("UPDATE `reception` SET  novay_novost='0' WHERE  id= '".$_GET['id']."' ");
     
  10. swerwer

    swerwer Создатель

    Регистр.:
    21 окт 2012
    Сообщения:
    10
    Симпатии:
    2
    Как вариант - каждому юзеру в куки ставить ид прочитанных новостей и искать потом в этом массиве. Но это долго.
    Гораздо проще записывать (куки, или в базу по ip) дату последнего визита и все новости, которые младше этой даты, помечать как старые.