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) 
                 |