[php] preg match sql datetime

0

Witam. Mam problem z odpowiednim zapisaniem funkcji preg match. Pobieram datę wraz z godziną z inputa type="text" i chcę aby wpisywany był jedynie format RRRR-MM-DD GG:MM:SS

na razie udało mi się osiągnąć pierwsza część - czyli rok

if (!preg_match('/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/', $data)) {
               ........ 
     echo "nie udało sie !<br />";

            } else {
              .......
                echo "Dane zostały zapisane!<br />";

czy pomógłby mi ktoś pomóc z tym problemem? generalnie chciałem przy okazji poćwiczyć na tym przypadku formatowanie danych przy użyciu preg match ale nie do końca rozumiem formułę zapisu parametrów tej funkcji i stąd moje problemy.

Ewentualnie pytanie jeszcze - jakie mam inne możliwości pobierania daty i godziny z formularza w html? zapewne istnieją łatwiejsze sposoby ale jak pisałem wyżej - nie chodzi tylko o samo zrobienie ale od razu o wyćwiczenie i zrozumienie preg match. niemniej wszelkie dodatkowe wskazówki i porady chętnie sprawdzę :)

z góry dziękuję za pomoc

0

mozesz uzyc jakiegos kalendarza w js, a polu input dac readonly (ale wtedy zablokujesz ludzi bez js.. chyba ze readonly bedziesz ustawiac przez js po wczytaniu dokumentu - wtedy ma sens)

o regularnych dobrze napisali tutaj:
http://www.programuj.com/artykuly/www/regularne.php

jeden problem z tym linkiem - zescapeowało mu wszystkie backslashe --- \ więc są podwójnie -- a więc się miesza czytając to :/ najlepiej sobie to wkleić do worda i usunąć podwójne backslashe (raz w całym dokumencie) i będzie ok. albo znaleźć inny dokument o regexpach - ale ja ten właśnie lubię, bo ten właśnie mnie oświecił :)

preg_match('@^[0-9]{4}-[0-9]{2}-[0-9]{2}\ [0-9]{2}[0-9]{2}:[0-9]{2}[0-9]{2}:[0-9]{2}[0-9]{2}$@',$data)
0

no i super. dzięki wielkie. teraz już chyba sobie poradzę :)

chętnie skorzystałbym z JS ale nie znam się za bardzo na JS więc to tylko mnoży moje problemy ;)

p.s Idąc tropem JS dotarłem do takiej strony:
http://www.nogray.com/calendar.php

kalendarzyk jest fajny i dosyć banalnie jest go przystosować na swoje potrzeby ale pojawił się problem. Skorzystałem z wersji pierwszej - pojawiający się kalendarz z którego wybiera się datę do inputa. następnie pobieram dane z formularza - między innymi to co zostało pobrane z kalendarza:

$data = $_POST['data']; pobieram dane z tego inputa:

mam więc zmienną w postaci yyyy-mm-dd ale jako string. tutaj już mogę pobawić się php ale w phpmyadmin ciągle widzę date 0000-00-00. próbowałem już kilku funkcji ale nic nie udało mi się osiągnąć. stoję w martwym punkcie. doczytałem oczywiście że nie ma w php zmiennej typy "date" . Muszę więc ją reprezentować jako timestamp lub tekst. tekst nie rozwiązuje mojego problemu więc wniosek jest prosty - muszę zmienną $data przekonwertować na typ timestamp. nie wiem tylko jaka funkcja mi w tym pomoże...

0

Jak bedziesz się zaczynać bawić z JS to od razu ściągaj jQuery
Tutaj bardzo dobry kalendarz jako plugin do jQuery
http://plugins.jquery.com/project/dyndatetime

Powinno być ok, weź sobie sprawdź zapytanie, bo jak na mnie coś źle zrobiłeś i w zapytaniu nie wstawiasz tego co trzeba..

A tu odpowiedź na drugą część pytania
http://tinyurl.com/32n8btq

1 użytkowników online, w tym zalogowanych: 0, gości: 1