Witam, Mam dość nietypowy problem bowiem w bazie mysql mam w jednej tabeli pole daty typu date. Mysql dopuszcza wprowadzenie daty typu (2012-00-00 czy też 2012-01-00). W mojej aplikacji muszę użytkownikowi umożliwić opcję wpisania nie pełnej daty np samego roku 2013-00-00. problemu by nie było jakby użytkownik wybierał sobie poszczególne części daty (dzień, miesiąc, rok) z rozwijanej listy. Wtedy po prostu dopisałbym oprócz np miesięcy <option value="00">??</option>. Problem w tym, że użytkownik nie chce mieć opcji wybierania daty tylko wpisywania jej z palca. I tu teraz pojawia się problem. bowiem jak zrobić żeby np w przypadku wpisania czegoś takiego jak 2012-13-01 w bazie nie było zapisu 0000-00-00 tylko żeby zwrócić użytkownikowi to jako błąd? Do tej pory napisałem kod który sprawdza czy wszystkie pola części daty są uzupełnione jeżeli tak to sprawdza tą datę funkcją checkdate() jeżeli nie to tam gdzie pole nie zostało uzupełnione dopisuje zera. Ale jak sprawdzić czy użytkownik jeżeli czegoś nie wpisał to czy reszta jest ok? Poniżej zamieszczam kod który napisałem do tej pory. Jeżeli ktoś ma może jakiś inny pomysł jak rozwiązać ten problem to proszę o podpowiedź.
if (isset($_POST['data_sm_dzien']) && empty($_POST['data_sm_dzien'])) {
$data_sm_dzien="00";
$s=1;
} else
{
{
$data_sm_dzien = trim($_POST['data_sm_dzien']); }
}
if (isset($_POST['data_sm_miesiac']) && empty($_POST['data_sm_miesiac'])) {
$data_sm_miesiac="00";
$s=1;
} else
{
if (isset($_POST['data_sm_miesiac']) && is_numeric($_POST['data_sm_miesiac'])) {
$data_sm_miesiac = trim($_POST['data_sm_miesiac']); }
}
if (isset($_POST['data_sm_rok']) && empty($_POST['data_sm_rok'])) {
$data_sm_rok="0000";
$s=1;
} else
{
{
}
$data_sm_rok = trim($_POST['data_sm_rok']); }
}
if ($s==1)
{
$data_sm = "$data_sm_rok-$data_sm_miesiac-$data_sm_dzien";
} else
{
if (checkdate($_POST['data_sm_miesiac'], $_POST['data_sm_dzien'], $_POST['data_sm_rok'])) {
$data_sm_dzien=$_POST['data_sm_miesiac'];
$data_sm_miesiac=$_POST['data_sm_dzien'];
$data_sm_rok=$_POST['data_sm_rok'];
$data_sm = "$data_sm_rok-$data_sm_miesiac-$data_sm_dzien";
}
else
{
echo "Data jest nieprawidłowa! Podaj prawdziwą!"; }
}