2013-03-31 3 views
0

По какой-то причине я не могу получить php для распознавания ввода формы HTML в качестве даты.HTML-форма не будет передана на дату PHP

Я следующая форма HTML:

<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:

$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); 

Возвращение я должен получить от этого должно отражать то, что было введено в форму, однако все, что возвращает текущая дата и время. Есть ли ошибка в моем коде где-то? Я пробовал несколько методов php-времени, но все возвращают текущую дату NOT, которая была введена в HTML-форму.

+0

Вы эхом отозвали каждую переменную $ _POST (или 'echo print_r ($ _ POST, 1);'), чтобы убедиться, что они правильно установлены? –

ответ

2

mktime() устанавливает каждый параметр в качестве текущей даты/времени. Таким образом, похоже, что ваши значения $_POST не установлены, как ожидалось, пустые или неправильные.

В соответствии с Converting to integer вам не нужно явно указывать, поскольку функция ожидает int s в любом случае. Но выполнение явного приведения или преобразования позволит вам проверить, действительно ли это работает, прежде чем полагаться на вызов функции, чтобы сделать это за вас (и в этом случае, возможно, это не получится).

Вы используете (int) бросить ... Что об использовании intval() вместо или в дополнение, а затем проверить/print входные значения до Вашего обращения, а затем снова после того, как (до mktime()).

Я ожидаю, что вы обнаружите, что они не так, как ожидалось, и если да, то ваши явные отбрасывания также терпят неудачу.

+0

@ AnnHolley Я ценю признательность, но взглядом вашего собственного ответа вы решили это самостоятельно! Если мой ответ помог вам отладить вашу проблему, то оценка повышена, но на самом деле я не заметил ошибку, которую вы нашли, поэтому не чувствуйте себя правильно, принимая ее. Совершенно верно принять ваш собственный ответ. – Sepster

0

Возможно, проблема связана с тем, что некоторые числа начинаются с начального нуля, что делает их восьмеричными. Число, подобное 08, ничего не значит в восьмеричном.

0

Выяснил это! Это была простая ошибка с капитализацией. У меня есть $ _POST («DDAY») вместо $ _POST («DDay»), поэтому он не вызывал вход «DDay» из HTML. Спасибо всем за помощь!

+0

Получили ли ответы ответы на этот вопрос? Если это так, вы должны соответственно повышать. Кроме того, обратите внимание, что вы можете принять свой собственный ответ. – Sepster

+0

Хороший подход, который поможет избежать такого рода проблем, заключается в том, чтобы не использовать «магические литералы», а определять константы и использовать их везде, где будет использоваться литерал. Например, в этом случае 1. 'define ('KEY_DDAY', 'DDay');' '2. ...