2013-03-31 2 views
0

어떤 이유로 PHP에서 HTML 폼 입력을 날짜로 인식하지 못합니다.HTML 폼이 PHP 날짜로 전송되지 않습니다

나는 다음과 같은 HTML 양식있다 : 그러나 모든 반환

$DCity=(int) $_POST["DCity"]; 
$ACity=(int) $_POST["ACity"]; 
$DMonth=(int) $_POST["DMonth"]; 
$DDay=(int) $_POST["DDAY"]; 
$DYear=(int) $_POST["DYear"]; 
$DHour=(int) $_POST["DHour"]; 
$DMin=(int) $_POST["DMin"]; 
$DTime = mktime($DHour, $DMin, 0, $DMonth, $DDay, $DYear); 
print date(DATE_RFC822, $DTime); 

그 양식에 입력 된대로 반영해야한다에서 나는 가야 반환 :

<form action="Input.php" method="post"> 
Depature Date: 
<select name="DMonth"> 
<option>- Select Month -</option> 
<option value="01">January</option> 
<option value="02">February</option> 
<option value="03">March</option> 
<option value="04">April</option> 
<option value="05">May</option> 
<option value="06">June</option> 
<option value="07">July</option> 
<option value="08">August</option> 
<option value="09">September</option> 
<option value="10">October</option> 
<option value="11">November</option> 
<option value="12">December</option> 
</select> 
<select name="DDay"> 
<option>- Select Day -</option> 
    <option value="01">1</option> 
    <option value="02">2</option> 
    <option value="03">3</option> 
    <option value="04">4</option> 
    <option value="05">5</option> 
    <option value="06">6</option> 
    <option value="07">7</option> 
    <option value="08">8</option> 
    <option value="09">9</option> 
    <option value="10">10</option> 
    <option value="11">11</option> 
    <option value="12">12</option> 
    <option value="13">13</option> 
    <option value="14">14</option> 
    <option value="15">15</option> 
    <option value="16">16</option> 
    <option value="17">17</option> 
    <option value="18">18</option> 
    <option value="19">19</option> 
    <option value="20">20</option> 
    <option value="21">21</option> 
    <option value="22">22</option> 
    <option value="23">23</option> 
    <option value="24">24</option> 
    <option value="25">25</option> 
    <option value="26">26</option> 
    <option value="27">27</option> 
    <option value="28">28</option> 
    <option value="29">29</option> 
    <option value="30">30</option> 
    <option value="31">31</option> 
</select> 
<select name="DYear"> 
<option>- Select Year -</option> 
<option value="2013">2013</option> 
<option value="2014">2014</option> 
<option value="2015">2015</option> 
<option value="2016">2016</option> 
<option value="2017">2017</option> 
<option value="2018">2018</option> 
<option value="2019">2019</option> 
<option value="2020">2020</option> 
<option value="2021">2021</option> 
<option value="2022">2022</option> 
</select><br> 
Departure Time: <select name="DHour" input type="number"> 
<option>- Select Hour -</option> 
<option value="00">12 a.m.</option> 
<option value="01">1 a.m.</option> 
<option value="02">2 a.m.</option> 
<option value="03">3 a.m.</option> 
<option value="04">4 a.m.</option> 
<option value="05">5 a.m.</option> 
<option value="06">6 a.m.</option> 
<option value="07">7 a.m.</option> 
<option value="08">8 a.m.</option> 
<option value="09">9 a.m.</option> 
<option value="10">10 a.m.</option> 
<option value="11">11 a.m.</option> 
<option value="12">12 p.m.</option> 
<option value="13">1 p.m.</option> 
<option value="14">2 p.m.</option> 
<option value="15">3 p.m.</option> 
<option value="16">4 p.m.</option> 
<option value="17">5 p.m.</option> 
<option value="18">6 p.m.</option> 
<option value="19">7 p.m.</option> 
<option value="20">8 p.m.</option> 
<option value="21">9 p.m.</option> 
<option value="22">10 p.m.</option> 
<option value="23">11 p.m.</option> 
</select> 
<select name="DMin"> 
<option>- Select Minute -</option> 
<option value="00">00</option> 
<option value="15">15</option> 
<option value="30">30</option> 
<option value="45">45</option> 
</select> 
<br> 
<input type="submit" value="Submit"> 
</form> 

다음과 같은 PHP를 현재 날짜와 시간입니다. 내 코드에 어딘가에 오류가 있습니까 ?? PHP 시간의 여러 가지 방법을 시도했지만 모든 HTML 폼에 입력 한 현재 날짜를 반환합니다.

+0

각각의 $ _POST 변수 (또는'echo print_r ($ _ POST, 1);')가 제대로 설정되었는지 확인하기 위해 출력 했습니까? –

답변

2

mktime()은 기본값으로 각 매개 변수를 현재 날짜/시간으로 사용합니다. 따라서 값이 예상대로 설정되지 않았거나 비어 있거나 잘못된 유형 인 것으로 보입니다.

Converting to integer에 따르면 함수는 int을 예상하므로 명시 적으로 캐스팅하지 않아도됩니다. 그러나 명시 적 캐스트 또는 변환을 수행하면 함수 호출에 의존하기 전에 실제로 작동하는지 확인할 수 있습니다 (이 경우에는 실패 할 수도 있음). 당신은 캐스팅 (int)을 사용하고

... 무엇 다음 다시 대신 또는 추가 intval()을 사용하고 전환하기 전에/print 입력 값을 테스트에 대한 후 (mktime() 전).

예상대로 나올 것으로 예상됩니다. 그렇다면 명시 적 캐스트도 실패합니다.

+0

@AnnHolley 수락에 감사 드리며, 자신의 답변을 보면서이 문제를 직접 해결했습니다! 내 대답이 문제를 디버그하는 데 도움이 되었다면 upvote는 높이 평가되지만 실제로 발견 한 버그는 발견하지 못했고 동의를 제대로 취하지는 않습니다. 그것은 당신 자신의 대답을 받아들이는 것이 완벽합니다. – Sepster

0

아마도 숫자 중 일부가 앞에 오는 0으로 시작하여 8 진수가되기 때문에 문제가있을 수 있습니다. 08과 같은 숫자는 8 진수를 의미하지 않습니다.

0

알아 냈어! 대문자 사용이란 단순한 실수였습니다. $ _POST ("DDay") 대신 $ _POST ("DDAY")를 사용하여 HTML에서 "DDay"입력을 호출하지 않았습니다. 모두의 도움에 감사드립니다!

+0

여기에 나와있는 답변이 도움이 되었습니까? 그렇다면, 당신은 그에 따라 upvote해야합니다. 또한 자신의 대답을 수락 할 수 있음에 유의하십시오. – Sepster

+0

이런 종류의 문제를 피하는 데 도움이되는 좋은 방법은 "마법 리터럴"을 사용하는 것이 아니라 상수를 정의하고 리터럴이 사용될 때마다 이것을 재사용하는 것입니다. 예를 들어,이 경우, 1. define ('KEY_DDAY', 'DDay'); ...