Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: обработка даты

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Вездеход
Отправлено: 10 Декабря, 2008 - 09:59:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




товарисчи. помогите плз )
есть поле в которое пользователь вбивает дату
вот как сделать так чтобы жаваскрипт сам обрабатывал это поле и если там ошибка - выдавал предупреждение
и желательно чтобы он строго требовал чтобы дата была в виде дд-мм-гггг
спасибою )

ps
в жаве вапще ваще не шарю )


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Champion Супермодератор
Отправлено: 10 Декабря, 2008 - 10:14:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




chk_str = 'проверяемая дата'
delim = '.' // символ разделитель. 03.12.08 - разделитель - '.'
day_in_month[1] = 31
day_in_month[2] = 28
day_in_month[3] = 31
...
arr_date = chk_str.split(delim)
if (arr_date[2]от 0 до 99 или имеет длину 4 символа){
это корректный год
если он еще делится на 4 (високосный) day_in_month[2] = 29
}
else return false
if (arr_date[1] от 1 до 12)
...аналогично
if (arr_date[0] == day_in_month[ arr_date[0] ])
хорошо
else плохо
(Добавление)
А еще
if ('Invalid Date' == (date = new Date(chk_str)))
левая дата
 
 Top
Вездеход
Отправлено: 10 Декабря, 2008 - 10:33:10
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




а мона это оформить? а то я не знаю как...
Закатив глазки


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Champion Супермодератор
Отправлено: 10 Декабря, 2008 - 10:53:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




<script>
function check_date(chk_str)
{все выше написанное, кроме первой строки
}
 
 Top
Вездеход
Отправлено: 10 Декабря, 2008 - 12:01:34
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




<script>
function check_date(chk_str)
{
chk_str = 'проверяемая дата'
delim = '.'
day_in_month[1] = 31
day_in_month[2] = 28
day_in_month[3] = 31
// сюда напишу количество дней в месяцах

arr_date = chk_str.split(delim)
if ((arr_date[2]>=0 and arr_date[2]<99) or (arr_date[2].lenght==4))
{
//это корректный год
//если он еще делится на 4 (високосный) day_in_month[2] = 29
// как тут писать я не знаю =(
}
else return false
if (arr_date[1] от 1 до 12)
//...аналогично
if (arr_date[0] == day_in_month[ arr_date[0] ])
///хорошо - а как это сделать? )
else {
// тоже самое =(
//плохо
}
</script>

у меня возникли вопросы касательно обработки - как это лучше сделать? как вывести сообщение об ошибке и т.д.


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Champion Супермодератор
Отправлено: 10 Декабря, 2008 - 12:14:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




<script>
function check_date(chk_str)
{
этой строки нету здесь
delim = '.'
var day_in_month[1] = 31
var day_in_month[2] = 28
var day_in_month[3] = 31
// сюда напишу количество дней в месяцах

arr_date = chk_str.split(delim)
arr_date[1] = parseInt(arr_date[1])
arr_date[0] = parseInt(arr_date[0])
arr_date[2] = parseInt(arr_date[2])

if ((arr_date[2]>=0 and arr_date[2]<99) &&/*and*/ (arr_date[2].lenght==4))
{
//это корректный год
//если он еще делится на 4 (високосный) day_in_month[2] = 29
// как тут писать я не знаю =(
if ((arr_date[2] % 4) == 0) day_in_month[2] = 29
}
else return false
if (arr_date[1] от 1 до 12)
//...аналогично теперь у нас уже корректный и год, и месяц
if (arr_date[0] == day_in_month[ arr_date[0] ])
///хорошо - а как это сделать? )
return rtue
else {
return false
// тоже самое =(
//плохо
}
</script>
<input name=in_date><input type=button onclick = 'javascript:{if (check_date(document.in_date.value)) alert(document.in_date.value+"криво " ) ; esle alert(document.in_date.value+"некорректная дада " ) } '>

(Отредактировано автором: 10 Декабря, 2008 - 12:15:30)

 
 Top
Вездеход
Отправлено: 10 Декабря, 2008 - 14:17:12
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




после обработки вот такой вот код у меня получился
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <script LANGUAGE="javascript">
  3. function check_date(chk_str)
  4. {
  5.         delim = '.';
  6.         var day_in_month = new Array('', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30');
  7.         arr_date = chk_str.split(delim);
  8.         arr_date[1] = parseInt(arr_date[1]);
  9.         arr_date[0] = parseInt(arr_date[0]);
  10.         arr_date[2] = parseInt(arr_date[2]);
  11.  
  12.         if ((arr_date[2]>0 && arr_date[2]<99) && (arr_date[2].lenght==4))
  13.         {
  14.                 if ((arr_date[2] % 4) == 0) { day_in_month[2] = 29; }
  15.                 return true;
  16.         } else {  return false; }
  17.         if (arr_date[1]>0 && arr_date[1]<12) { return true; } else { return false; }
  18.         if (arr_date[0] == day_in_month[arr_date[0]]) { return true; } else { return false; }
  19. }
  20. </script>
  21. <form name="my_form">
  22.  
  23. <input name="in_date" type="text">
  24. <input type="button" onclick="javascript:{if (check_date(document.in_date.value)) alert(document.in_date.value2+'криво') ; else alert(document.in_date3.value+'некорректная дата') } " value="go">
  25. </form>
  26.  


файрфокс вот так ругается:
Ошибка: document.in_date has no properties
Источник: http://localhost/
Строка: 1


в чем проблема я уже не понимаю - все что мог исправил....


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Champion Супермодератор
Отправлено: 10 Декабря, 2008 - 14:36:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




тогда document.getElementByName
 
 Top
Вездеход
Отправлено: 10 Декабря, 2008 - 14:55:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




даже написав прям вот так в скрипте:

arr_date = document.getElementByName('in_date').split(delim);

файрфокс выдает ошибку:
Ошибка: window.getElementByName is not a function
Источник: http://localhost/
Строка: 6


пробовал по всякому - все равно на эту ошибку ругается


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Champion Супермодератор
Отправлено: 10 Декабря, 2008 - 15:10:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Сделаем так
<form name="my_form">

<input id=in_date name="in_date" type="text">
<input type="button" onclick="javascript:{if (check_date(document.getElementById('in_date' ).value))
alert('ok' ); else alert('криво' ) ; } " value="go">
</form>
(Добавление)
CODE (text):
скопировать код в буфер обмена
  1. if ((arr_date[2] % 4) == 0) { day_in_month[2] = 29; }
  2. return true;
  3. } else { return false; }
На этом ваш код в любом случае завершится, и корректной будет считаться любая дата, у которой корректны год и месяц. return true нужно сделать один раз в самом конце скрипта, а при обнаружении первой же некорректности выполнять куект false

(Отредактировано автором: 10 Декабря, 2008 - 15:14:40)

 
 Top
Вездеход
Отправлено: 10 Декабря, 2008 - 16:09:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




понял. пайду тестить)


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
valenok
Отправлено: 10 Декабря, 2008 - 16:29:50
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Может тебе к этому полю календарик присобачить ?


-----
Truly yours, Sasha.
 
My status
 Top
Вездеход
Отправлено: 10 Декабря, 2008 - 21:36:42
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




да я вот тоже так думал...
пока хачу сделать поле в которое мона писать дату определенного типа - дд.мм.гггг
но потом думаю добавлю и календарик туда для простоты использования. =)


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB