За последние 24 часа нас посетили 22699 программистов и 1267 роботов. Сейчас ищут 713 программистов ...

Как отследить обработку одного документа в разных вкладках браузера?

Тема в разделе "PHP для новичков", создана пользователем 118_64, 22 авг 2017.

  1. 118_64

    118_64 Активный пользователь

    С нами с:
    8 янв 2015
    Сообщения:
    84
    Симпатии:
    2
    Есть документ (список <li></li>), который редактируется в браузере. Проблема: если этот документ открыть в другой вкладке, его также можно редактировать, что может вызвать конфликт/коллизию при сохранении в БД (в одной вкладке элемент списка удален, а в другой к нему добавили изображение, например).

    Прошу совета, существуют ли решения отследить открытие документа в другой вкладке? Например, с помощью js или любым другим способом?
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    заведи идентификтор в базе, когда открыл документ на редактирование например перевел в true аначе false по умолчанию. Далее просто проверяешь документ открыт ли на редактирование или нет. Это то что пришло в голоу. И делать на стороне php.
     
  3. htmaker

    htmaker Новичок

    С нами с:
    22 авг 2017
    Сообщения:
    12
    Симпатии:
    0
    Можно создать временную таблицу для контроля версий, т.е. при редактировании данные тянутся с основной таблицы, при сохранении пишется во временную, проверяет наличие других версий по ID элемента, и при необходимости сообщается о наличии других версий, либо если всё в порядке переносится в основную таблицу.
     
  4. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    При сохранении почему не проверяете на существование данных, после чего и идет изменение?
     
  5. 118_64

    118_64 Активный пользователь

    С нами с:
    8 янв 2015
    Сообщения:
    84
    Симпатии:
    2
    данные в любом случае уже существуют. Список -- это строки из БД, загруженные для редактирования.
     
  6. Oye

    Oye Новичок

    С нами с:
    17 июн 2016
    Сообщения:
    1
    Симпатии:
    1
    Проще всего не писать в б\д, отнимая ресурсы хостинга, и не использовать php. Для этого существует механизм Session Storage в самом браузере. Алгоритм простой. Проверяете в javascript'е наличие в Session Storage какого-то флажка типа "editing=true". Если есть, закрываете вкладку или алерт какой-нибудь, а если нет его, то записываете это значение в Session Storage.

    см. здесь: https://ru.wikipedia.org/wiki/Web_Storage

    https://developer.mozilla.org/ru/docs/Web/API/Window/sessionStorage
    https://itchief.ru/lessons/javascript/javascript-sessionstorage-and-localstorage

    Local Storage не исчезает с закрытием браузера - этим и отличается от Session Storage.

    https://www.w3schools.com/html/html5_webstorage.asp
     
    118_64 нравится это.