Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проверув формата даты
 
 автор: kid_a   (19.12.2007 в 07:54)   письмо автору
 
 

Необходимо проверять формат даты. Должен быть - 18.12.2007 00:00 или 18.12.2007 . в таком случае запрос выполняется корректно.


 if ($_POST['date_e'.$i]) 
     { 
     $date_e=$_POST['date_e'.$i]; 
     } 
     else
     { 
     $date_e="01.01.1900 00:00"; 
     } 


Дату в БД добавляю в запросе.




 ... set date_e =convert(datetime,'".$date_e."', 104)


Как проверить, что пользователь ввел неверный формат (допустим, 18/12/07)?
Для Windows-платформ strptime() не реализована.

   
 
 автор: Trianon   (19.12.2007 в 09:47)   письмо автору
 
   для: kid_a   (19.12.2007 в 07:54)
 

> set date_e =convert(datetime,'".$date_e."', 104)

О какой СУБД речь идет?

   
 
 автор: kid_a   (19.12.2007 в 09:53)   письмо автору
 
   для: Trianon   (19.12.2007 в 09:47)
 

MSSQL. 104 - формат dd.mm.yyyy hh:mm
возможно ли проверять с помощью регулярных выражений?

   
 
 автор: Trianon   (19.12.2007 в 09:59)   письмо автору
 
   для: kid_a   (19.12.2007 в 09:53)
 

самое простое, наверное - проверить формат регуляркой.

/([\d]{2}).([\d]{2}).([\d]{4})(\ ([\d]{2})\:([\d]{2}))?/

   
 
 автор: kid_a   (19.12.2007 в 10:12)   письмо автору
 
   для: Trianon   (19.12.2007 в 09:59)
 


if
(eregi("/([\d]{2}).([\d]{2}).([\d]{4})(\ ([\d]{2})\:([\d]{2}))?/ ", $_POST['date_e'.$i]))
{

echo "да";



}
else

{
echo "Нет";

}

условие не выполняется. что исправить?

   
 
 автор: Trianon   (19.12.2007 в 10:22)   письмо автору
 
   для: kid_a   (19.12.2007 в 10:12)
 

использовать preg_match,
убрать хвостовой пробел после шаблона

   
 
 автор: kid_a   (19.12.2007 в 10:26)   письмо автору
 
   для: Trianon   (19.12.2007 в 10:22)
 

спасибо.

   
 
 автор: Trianon   (19.12.2007 в 10:50)   письмо автору
 
   для: kid_a   (19.12.2007 в 10:26)
 

И Faraon прав. ^ и $ - должны быть по краям

   
 
 автор: Faraon   (19.12.2007 в 10:29)   письмо автору
 
   для: Trianon   (19.12.2007 в 10:22)
 

В вашем патернне прокатит типа
18.12-2007 00:00

   
 
 автор: Faraon   (19.12.2007 в 10:25)   письмо автору
 
   для: kid_a   (19.12.2007 в 10:12)
 


<?
$t
="18.12.2007 00:00";
if
(
preg_match("/^[\d]{2}\.[\d]{2}\.[\d]{4}\s[\d]{2}:[\d]{2}$/"$t))
{
echo 
"да";
}
else
{
echo 
"Нет";
}
?>


P.S. Один минус во всем этом прокатит дата скажем такая
18.45.3456 00:00
Лучше думаю пользователю надо предоставлять выбор из списка

   
 
 автор: kid_a   (20.12.2007 в 08:29)   письмо автору
 
   для: Faraon   (19.12.2007 в 10:25)
 

можно использовать checkdate()

   
 
 автор: kid_a   (21.12.2007 в 14:23)   письмо автору
 
   для: kid_a   (20.12.2007 в 08:29)
 

Ошибка: Undefined offset: 2


if (preg_match("/^[\d]{2}\.[\d]{2}\.[\d]{4}\s[\d]{2}:[\d]{2}$/", $date_e,$matches) and preg_match("/^[\d]{2}\.[\d]{2}\.[\d]{4}\s[\d]{2}:[\d]{2}$/", $date_d,$matches2)) 

    { 
        
        if (checkdate($matches[2], $matches[1], $matches[3]) and checkdate($matches2[2], $matches2[1], $matches2[3])  ) 

        {
                echo "да";


            }

    else
        {
    
          echo "нет ";
        
        } 
    
        } 


else
    {

    echo "неверный формат даты.";

    }

   
 
 автор: Faraon   (21.12.2007 в 15:07)   письмо автору
 
   для: kid_a   (21.12.2007 в 14:23)
 


<?php
$date_e
="12.12.2007 01:56";
$date_d="08.12.2007 01:56";
if (
preg_match("/^([\d]{2})\.([\d]{2})\.([\d]{4})\s([\d]{2}):([\d]{2})$/"$date_e,$matches) and
 
preg_match("/^([\d]{2})\.([\d]{2})\.([\d]{4})\s([\d]{2}):([\d]{2})$/"$date_d,$matches2))
    {
        if (
checkdate($matches[2], $matches[1], $matches[3]) and checkdate($matches2[2], $matches2[1], $matches2[3]))
        {
                echo 
"да";
            }
    else
        {
          echo 
"нет ";
        }
        }
else
    {
    echo 
"неверный формат даты.";
    }
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования