[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка правильности вводимой даты
Гость_Александр
Добрый день!
У меня есть на форме куча полей, среди которых 3 поля с датой.
Я хочу проверить корректность введенной информации в эти поля.

Если писать вот так, то работает:

function valid_date($date_postup, $date_in_doc, $date_ispol)
{
if(ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$date_postup)&&ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$date_in_doc)&&ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$date_ispol))
return true;
else
return
false;
}


А если вот так (чтобы экономней), почему-то не хочет. Всё время тормозится только на первой дате и всё, остальные не проверяет:

function valid_date($date_postup, $date_in_doc, $date_ispol)
{
$array_date=array($date_postup, $date_in_doc, $date_ispol);
for($i=0; $i<count($array_date); $i++)
{
if(ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$array_date[$i]))
return true;
else
return
false;
}
}



В чём ошибка?



Спустя 57 минут, 17 секунд (9.04.2011 - 16:35) inpost написал(а):
Гость_Александр
ereg уже несколько лет как устарела, пользуйся preg .

Спустя 55 минут, 28 секунд (9.04.2011 - 17:30) T1grOK написал(а):
Еще неплохо бы проверять не только формат даты, но и ее существование. А то кто нить засобачит 31 февраля.

Спустя 58 минут, 21 секунда (9.04.2011 - 18:28) Гость_Александр написал(а):
И тем не менее по примеру ответа-то нет)

Спустя 2 дня, 17 часов, 6 минут, 11 секунд (12.04.2011 - 11:35) Guest написал(а):
"величайшая вина всех программ перед программистами заключается в том, что программы делают только то, что программист написал, а не то что он подразумевал." (с) не помню кто.

у тебя стоит return в if'е.

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

Спустя 3 часа, 25 минут, 43 секунды (12.04.2011 - 15:00) Animi написал(а):
Совет для неновичков:
Используйте уже написаные классы валидации. Например, c ZendFramework.

Спустя 1 час, 42 минуты, 23 секунды (12.04.2011 - 16:43) T1grOK написал(а):

function valid_date($date_postup, $date_in_doc, $date_ispol)
{
$array_date=array($date_postup, $date_in_doc, $date_ispol);
$flag = true;
for($i=0; $i<count($array_date); $i++)
{
if(!ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$array_date[$i]))
$flag = false;
}
return $flag;
}

Ясное дело при неправильном формате в одной из дат будет возвращено ФОЛС

Спустя 17 часов, 59 минут, 23 секунды (13.04.2011 - 10:42) Гость_Александр написал(а):
T1grOK, спасибо вам большое!)
Но странно просто, почему мой вариант не пашет?
Даже по смыслу: ЕСЛИ дата соответсвует шаблону, вернуть тру, иначе, если не соответсвует, вернуть фолс...

Спустя 26 минут, 33 секунды (13.04.2011 - 11:09) T1grOK написал(а):
Потому, что после того как функция вернула результат она прекращает последующее выполнение. То есть цикл "обрывается".

Спустя 14 минут, 17 секунд (13.04.2011 - 11:23) Гость_Александр написал(а):
а...понял)
Спасибо еще раз ! smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.