Вниз  MySQL и мелкие вопросы
- 18.01.2014 / 01:11
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Dinisimys, потому что TIMESTAMP это строка с ещё большим количеством символов: '2014-01-15 07:29:13'

Следующий вопрос. Поскольку данные должны синхронизироваться с Android-клиентом, нужно как-то сделать, чтоб знать какая запись является более "свежей". То есть я передаю дату и время последней синхронизации, а мне должно вывести все записи, которые были добавлены или изменены с того времени. Как сделать?
Одного поля sync_time будет, наверное недостаточно?
__________________
 let live
- 18.01.2014 / 01:12
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, http://www.php.su/functions/?date Смотри эту функцию. Очень полезная для работы с таймстамп.
И для твоей хитрости именно она подойдет. Суть в том, что ты проверяешь три условия:
  1. $date_today=time();
  2. $date_user=таймстамп из бд
  3. if(date('j',$date_user)==date('j',$date_today) and date('n',$date_user)==date('n',$date_today) and date('Y',$date_user)==date('Y',$date_today)) { }//проверка совпадения дня,месяца,года

Может какие ошибки в коде(я с пхп давно не практиковался), но идея понятна.

Изменено Dinisimys (18.01 / 01:13) (всего 1 раз)
- 18.01.2014 / 01:20
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, разница между этими типами данных всего 1байт, это незначительно, и если правильно использовать, то все будет хорошо работать. Мне кажется, что для твоего второго вопроса как раз таки тип таймстапм подойдет
- 18.01.2014 / 01:21
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Dinisimys, да что ты пристал со своим timestamp, не нужен он мне :-D Во всяком случае в date. В sync_time может и сгодится. Всё и так прекрасно работает.
  1. $stat = ORM::for_table('stat_count')->
  2.         where('user_id', $user_id)->
  3.         where('exer_id', $this->id)->
  4.         where('date', $this->date)->
  5.         find_one();
  6. if ($stat) // Обновляем значения...
  7. else  // Добавляем значения...
  8. $stat->save();

__________________
 let live

Изменено aNNiMON (18.01 / 01:22) (всего 1 раз)
- 18.01.2014 / 01:23
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, ну смотри. Дя твоего второго вопроса решение:
Просто выводишь те записи, у которых значение таймстамп больше, чем таймстапм последней синхронизации. Вот и все.
- 18.01.2014 / 01:29
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Dinisimys, это и так понятно. Проблема немного в другом.
Допустим, мы на сайте добавили запись:
user: 1, total: 40, exer: 1 (отжимания), date: 2014-01-18, sync_time: 2014-01-18 10:00:00
А потом в Android-приложении до синхронизации тоже
user: 1, total: 100, exer: 1 (отжимания), date: 2014-01-18, sync_time: 2014-01-18 19:20:00
Потом, когда Android-приложение будет связываться с сайтом для обновления данных, что-то из них сотрётся.

Я вот думаю добавить ещё поле sync_version.
На сайте создаём запись:
user: 1, total: 40, exer: 1 (отжимания), date: 2014-01-18, sync_time: 2014-01-18 10:00:00, sync_version: 1
Точно так же в Android-приложении до синхронизации добавляем:
user: 1, total: 100, exer: 1 (отжимания), date: 2014-01-18, sync_time: 2014-01-18 19:20:00, sync_version: 1
Теперь при синхронизации, если sync_version совпадает, то мы складываем значения, а если они различны, то берём ту, которая больше.
__________________
 let live

Изменено aNNiMON (18.01 / 01:32) (всего 1 раз)
- 18.01.2014 / 01:32
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, всмысле сотрется неуправляемо? Блин, ты теперь добавил поле datetime(8байт) и считаешь это правильно? Ты два одинаковых по содержанию и смыслу поля делаешь в одной таблице. Это абсурд. Почему нормально не посллушаешь, и таймстамп не используешь? Это проще.
- 18.01.2014 / 01:37
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
В чем проблема так и не понял. Юзер два раза один и тот же результат может добавить и через сайт и через андроид?
- 18.01.2014 / 01:39
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Dinisimys, да причём здесь timestamp и datetime вообще? Не о нём сейчас речь.
К тому же, специально только что почитал, TIMESTAMP работает с учётом часового пояса, а мне это не нравится.

Нет, не один и тот же результат. Утром он с браузера добавил 40 отжиманий, а вечером в зале с мобилы стольник накинул. Это всё должно суммироваться.
__________________
 let live

Изменено aNNiMON (18.01 / 01:40) (всего 1 раз)
- 18.01.2014 / 01:40
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, да, и в чем проблема учет пояса?
Наверх  Всего сообщений: 750
Фильтровать сообщения
Поиск по теме
Файлы топика (22)