Ввод HTML-формы в mysql TIME - PullRequest
       24

Ввод HTML-формы в mysql TIME

1 голос
/ 21 декабря 2009

У меня есть форма добавления / редактирования для обновления и добавления в базу данных, и я не был уверен, как лучше вводить тип ВРЕМЯ (ЧЧ: ММ: СС). Должен ли я использовать несколько текстовых вводов HTML для ЧЧ, ММ, СС? если так, есть ли функция, которая подготавливает строку для ввода в базу данных?

В основном я пытаюсь указать, сколько часов, минут, секунд потребовалось для выполнения определенной задачи.

Кто-нибудь может указать мне правильное направление здесь?

Я разрабатываю сайт, используя Codeigniter (PHP).

Спасибо

Позвольте мне пойти дальше и уточнить, что должно произойти, еще немного ... Пользователь обязан вводить данные, относящиеся к спорту, в частности к минутам и секундам игры игроков. Я думаю об упрощении до нескольких минут. Возможно, таким способом ввода является только 1 вещь. Тогда опять мой вопрос: какой метод будет работать для преобразования этого «минутного числа» в правильный формат MYSQL TIME?

Ответы [ 6 ]

1 голос
/ 21 декабря 2009

Я написал помощника, чтобы сделать нечто подобное в приложении, над которым я работаю. Mine генерирует три выпадающих списка, hh, mm и am / pm, вызывая встроенный помощник form_dropdown. Как только я получаю данные из выпадающих меню, я конвертирую их в 24-часовой формат, а затем просто объединяю строки в правильный формат для MySQL. Так как это помощник, я могу просто вызвать его из любого представления, используя form_time(). Я могу опубликовать это здесь, если вы думаете, что это поможет увидеть это.

Dana

0 голосов
/ 13 августа 2015

У меня была такая же проблема с работой с вводом времени html. Однако мне удалось обойти это с помощью функции PHP.

Функция переводит время в формат, понятный для типа данных MYSQL DATETIME.

Конечно, вам нужно как-то ввести дату, но я оставлю это на ваше усмотрение.

functions.php

function convertHtmlTime($date,$time){
        $newDate = date($date);
        $newTime = date($time);
        $datetime = new DateTime($newDate.$newTime);
        return date_format($datetime, 'YmdHis');
}

test.php

$date="2007-02-16";
$time="23:59";
echo convertHtmlTime($date,$time);

Результаты:

20070216235900

0 голосов
/ 22 декабря 2009

Я искал некоторые альтернативы и решения и придумал следующее:

$min = 60;
$time[] = floor($min/60);
$time[] = $min%60;

И я использовал следующее для преобразования в формат MySQL TIME

INSERT INTO table (min) VALUES (MAKETIME($time[0], $time[1], 0))
0 голосов
/ 21 декабря 2009

Это одна из вечных проблем дизайна (веб) пользовательского интерфейса, как вводить время, не сводя пользователей с ума. То, что подходит для вашего конкретного случая, зависит только от вас, потому что это зависит от того, какой именно формат / обстоятельства вам нужны, а также от вашей целевой аудитории.

В качестве общих указаний я бы сказал:

  • Не делайте текстовое поле произвольной формы, которое требует определенного формата, например «Введите время (ЧЧ: ММ: СС)», потому что это слишком легко испортить и будет отказывать пользователям в вводе или путать время, если вы не выполните проверку.
  • Старайтесь избегать выпадений [0-23] [0-59] [0-59], так как они могут быть довольно болезненными (щелчок, прокрутка, щелчок, щелчок, прокрутка, щелчок, щелчок, прокрутка, щелчок).

Если простота использования является высоким приоритетом, как это было бы в случае общедоступных веб-сайтов, возможно, хорошая идея для выбора времени с использованием Javascript. Постарайтесь не использовать что-то слишком необычное, чего никто не получает (например, перетаскивая стрелки на часах).

Лучше всего подойдет текстовое поле произвольной формы. Пользователь может просто ввести «3 часа дня», «16:34» или «полночь». Возможно, вам придется предоставить примеры, чтобы начать работу пользователей, иначе они могут чувствовать себя потерянными. Вы можете выполнить это через strtotime на своем конце, но вам, возможно, придется заполнить пробелы и сделать много проверок.

Три коротких текстовых поля могут быть хорошей идеей, если ваша аудитория очень сосредоточена на клавиатуре, и можно ожидать, что они будут быстро пролистывать их.

Что касается форматирования его для SQL, однако вы получаете ввод времени от пользователя, вам следует собрать его в метку времени UNIX и отформатировать эту метку времени для SQL:

date('Y-m-d H:i:s', $timestamp);
0 голосов
/ 21 декабря 2009

это проверяет 2 числа, затем ":", затем 2 числа, затем ":", затем, наконец, 2 числа снова:

$cleanTime = preg_match( '/(\d\d)\:(\d\d)\:(\d\d)/', $_POST[ 'NAME_OF_TIME_INPUT' ] );
if( !$cleanTime ){ /* ... error ... */ }

не бойся всех слэшей, ха-ха (я был вначале, когда использовал регулярные выражения).

замените NAME_OF_TIME_INPUT содержимым атрибута name в <input на странице <form

т.е. если <input name="coolinput" />, тогда используйте $_POST[ 'coolinput' ]

0 голосов
/ 21 декабря 2009

просто используйте функцию now (), если ваша БД MYSQL - вы хотите сохранить текущий время

например:

UPDATE tbl SET timemodified = NOW()

и убедитесь, что тип "время"

Извините, я упустил этот момент. хм, может быть, вам нужно иметь время начала в вашей БД, а затем после того, как он / она закончит свою задачу. Вы должны запросить в БД время начала, вычесть его до времени окончания (вашего текущего времени), тогда результатом будет время, когда он / она выполнил задачу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...