mysql에서 날짜를 관리하는 방법을 배우려고합니다. 연습을위한 연습 문제가 있습니다.php checkdate, 각 인수를 개별적으로 확인하십시오.
입력시 사용자는 dd-mm-YYYY 형식의 날짜를 추가해야하며 날짜가 유효한 경우 형식을 YYYY-mm-dd로 변경하여 데이터베이스에 기록합니다.
HTML
<form method="POST" action="testing.php">
<div>
<label for="title" class="required">Title</label>
<input name="title" id="title" type="text" value="" />
</div>
<div>
<label for="date" class="required">Date</label>
<input name="date" id="date" type="date" value="" />
</div>
<button class="submit" type="submit" name="submit">Submit</button>
</form>
PHP
을 :이것은 내가 지금까지 무엇을 얼마나 DATE 변수 유형이 아직 도착하지 않은, (내가 이해로) 저장되지만 ...
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$title = filter_input(INPUT_POST, 'title', FILTER_SANITIZE_STRING);
$string_input_date = filter_input(INPUT_POST, 'date', FILTER_SANITIZE_STRING);
$array_input_date = explode("-", $string_input_date);
if(!checkdate($array_input_date[1], $array_input_date[0], $array_input_date[2])) {
if(checkdate(!$array_input_date[1], $array_input_date[0], $array_input_date[2])) {
$error_message = "wrong month"; die($error_message);
} elseif (checkdate($array_input_date[1], !$array_input_date[0], $array_input_date[2])) {
$error_message = "wrong day";
} elseif (checkdate($array_input_date[1], $array_input_date[0], !$array_input_date[2])) {
$error_message = "wrong year";
} else {
$error_message = "Introduce a valid date";
}
} else {
//success! it is a valid date
}
}
내가 볼 수있는 것은 작동하지 않지만 옵션마다 하나씩 각 인수를 검사 할 수있는 방법이 부족합니다. 객관적으로는 오류 메시지를 표시해야합니다. 잘못되었거나, 월 또는 1 년.
현재 "잘못된 날짜"라는 오류 메시지가 표시되는 35-04-2016을 소개하려고하지만 대신 "유효한 날짜 소개"가 표시됩니다. 내 if-elseif가 잘못 되었기 때문에 표시한다는 것을 알고 있지만 각 인수를 개별적으로 확인하는 방법에 대한 제안은 무엇입니까?
추신 : 정규 표현식으로 할 수 있다는 것을 알고 있습니다. 또는 한 달 같은 규칙을 만드는 것은 1-12 등입니다.하지만 멘토는 PHP 기능을 사용하고 기능을 내장해야한다고 말합니다.
당신에게
하지만 나는 같은 상황에 처해 있습니까? 주어진 날짜가 유효한지 아닌지 어떻게 비교합니까? 그 데이터를 파싱하면 ... # 35-04-2015 : [년] => 2035 [월] => 4 [일] => 20 그래서 감지하지 못합니다. 그 날은 잘못되었지만 주어진 해를 수정합니다! –
@eve_mf가 내 대답을 업데이트했습니다. ** 35-04-2015 **를'strtotime'에 건네 주면 false를 반환합니다. 그래서, 그 첫 번째 검증을 할 것입니다, 만약 충분하지 않다면'checkdate'에 갈 수 있습니다. – Haridarshan