Привет, ребята, мне было интересно, может ли кто-нибудь помочь мне в следующем:
У меня две даты введены в двух разных полях> startDate и endDate.
Когда они будут введены, я хотел бы показать предупреждение, если:
Я думал написать функцию PHP, но как мне ее называть, как только будет введена вторая дата?
Многое спасибо за помощь Франческо
Конвертируйте свои даты в Julian day вместе с gregoriantojd .
/** * Get the Julian day of a date. The Julian day is the number of days since * January 1, 4713 BC. */ function datetojd($date) { return gregoriantojd(idate('m', $date), idate('d', $date), idate('Y', $date)); } // you can use strtotime to parse a lot of date formats, assuming they are text $startDate = strtotime('22nd Nov 2009'); $finishDate = strtotime('26nd Nov 2009'); $diff = datetojd($finishDate) - datetojd($startDate); if ($diff < 0) { // oops, $finishDate is before $startDate } else { // check $diff is at least 3 or 7 depending on the dates }
Сделайте проверку на стороне клиента с помощью Javascript.
Затем выполните ту же сторону сервера проверки, которая может представить сообщение после отправки формы (для тех немногих пользователей, которые работают с отключенным Javascript?).
Я не уверен, если вы можете вызвать его, как только будет введена вторая дата, если вы не перезагрузите страницу или не выполните функцию на другой странице, которая может быть немного сложной
То, как я проверил даты, – использовать функцию mktime php, которая даст вам время unix. Тогда, если второе меньше, чем первое, второе – раньше, а если второе меньше, чем первое + 3 * 24 * 60 * 60 (секунды через 3 дня), то оно не будет на 3 дня
Случай 1 °:
SELECT [whatever you need from the table] WHERE endDate < startDate
2 ° случай:
SELECT [whatever you need from the table] WHERE (endDate - startDate) >= IF([select that define in wich period of the year the data are],3, 7)
Это плохо делает трюк, но, вероятно, ваша проблема не может быть решена sql-side.
Пожалуйста, опишите, что вам нужно делать.
РЕДАКТИРОВАТЬ:
Хорошо, тогда как кто-то предложил, сначала проверьте htem на js (для удобства, а не для безопасного: никогда не полагайтесь только на проверку js!)
Используйте strtotime для сравнения / операции.
EDIT2 (последний;): Идите с ответа Алекса