MySQL и мелкие вопросы << 1 ... 45 46 47 48 49 ... 75 >> 18.01.2014 / 01:11 | | aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Dinisimys, потому что TIMESTAMP это строка с ещё большим количеством символов: '2014-01-15 07:29:13'
Следующий вопрос. Поскольку данные должны синхронизироваться с Android-клиентом, нужно как-то сделать, чтоб знать какая запись является более "свежей". То есть я передаю дату и время последней синхронизации, а мне должно вывести все записи, которые были добавлены или изменены с того времени. Как сделать? Одного поля sync_time будет, наверное недостаточно?
__________________
let live |
18.01.2014 / 01:12 | | Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| aNNiMON, http://www.php.su/functions/?date Смотри эту функцию. Очень полезная для работы с таймстамп. И для твоей хитрости именно она подойдет. Суть в том, что ты проверяешь три условия: $date_today=time();
$date_user=таймстамп из бд
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 Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| aNNiMON, разница между этими типами данных всего 1байт, это незначительно, и если правильно использовать, то все будет хорошо работать. Мне кажется, что для твоего второго вопроса как раз таки тип таймстапм подойдет
|
18.01.2014 / 01:21 | | aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Dinisimys, да что ты пристал со своим timestamp, не нужен он мне Во всяком случае в date. В sync_time может и сгодится. Всё и так прекрасно работает. $stat = ORM::for_table('stat_count')->
where('user_id', $user_id)->
where('exer_id', $this->id)->
where('date', $this->date)->
find_one();
if ($stat) // Обновляем значения...
else // Добавляем значения...
$stat->save();
__________________
let live Изменено aNNiMON (18.01 / 01:22) (всего 1 раз) |
18.01.2014 / 01:23 | | Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| aNNiMON, ну смотри. Дя твоего второго вопроса решение: Просто выводишь те записи, у которых значение таймстамп больше, чем таймстапм последней синхронизации. Вот и все.
|
18.01.2014 / 01:29 | | aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| 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 Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| aNNiMON, всмысле сотрется неуправляемо? Блин, ты теперь добавил поле datetime(8байт) и считаешь это правильно? Ты два одинаковых по содержанию и смыслу поля делаешь в одной таблице. Это абсурд. Почему нормально не посллушаешь, и таймстамп не используешь? Это проще.
|
18.01.2014 / 01:37 | | Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| В чем проблема так и не понял. Юзер два раза один и тот же результат может добавить и через сайт и через андроид?
|
18.01.2014 / 01:39 | | aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Dinisimys, да причём здесь timestamp и datetime вообще? Не о нём сейчас речь. К тому же, специально только что почитал, TIMESTAMP работает с учётом часового пояса, а мне это не нравится.
Нет, не один и тот же результат. Утром он с браузера добавил 40 отжиманий, а вечером в зале с мобилы стольник накинул. Это всё должно суммироваться.
__________________
let live Изменено aNNiMON (18.01 / 01:40) (всего 1 раз) |
18.01.2014 / 01:40 | | Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| aNNiMON, да, и в чем проблема учет пояса?
|
<< 1 ... 45 46 47 48 49 ... 75 >> Всего сообщений: 750 Фильтровать сообщения Поиск по теме Файлы топика (22)
|