下記の3つのパターンに対応したフォームを作成し、その日時をechoしてください。
①現在からの日時を指定(例)「0日0時5分」と指定したら現在から5分後の時間をechoさせる。
②直接日時を指定(例)「5月26日7時28分」と指定したらそのままずばりechoさせる。
③上記いずれの指定もない場合、デフォルトして現在の日時がechoされる。
複数のフォームを使い分けて何時間何分後かあるいは直接時間を指定するというのがどうしてもうまくいきません。
また下記の点にもご留意くださいますようお願いします。
①は指定したもの以外は自動的に0となる。分を5だけと指定したら、現在から5分後がechoされる。
今年か来年だけを考慮していただければいいので、現在月が5月で②で「3月」と指定した場合、来年の3月ということでお願いしまいます。
セキュリティは考慮していただく必要はありません。
フォームのタイプはselectでもtextでも問題ありません。
Vista、IE、Firefox、最新のXampp、PHP5、 EclipsePDT2を使ってます。
以上よろしくお願いします。
複数のフォームを用意する場合
<html> <head> <title>日時表示</title> </head> <body> <div> <h1>日時表示</h1> <?php if(!$_POST) { echo "現在の時刻:" . date("Y/n/j H時i分") ."<br>\r\n"; } else { echo "<h2>リクエストの結果</h2>\r\n"; $mon = $_POST["mon"]; $day = $_POST["day"]; $hour = $_POST["hour"]; $min = $_POST["min"]; if($_POST["btn1"]) { $today = getdate(); $year = ($mon < $today["mon"]) ? $today["year"] + 1 : $today["year"]; echo "指定日時:" . $year. "/" . $mon. "/" . $day . " " . $hour . "時" . $min . "分<br>\r\n"; } if ($_POST["btn2"]) { echo "指定日時 " . $day . "日" . $hour . "時間" . $min . "分後:"; $day = $day * 24 * 60 * 60; $hour = $hour * 60 * 60; $min = $min * 60; $time = $day + $hour + $min; $reqday = time() + $time; echo date("Y/n/j H時i分", $reqday) . "<br>\r\n"; } } ?> <h3>フォーム1</h3> <form action="" method="POST"> <select name="mon"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select>月 <select name="day"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">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="hour"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">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> </select>時 <select name="min"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">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> <option value="32">32</option> <option value="33">33</option> <option value="34">34</option> <option value="35">35</option> <option value="36">36</option> <option value="37">37</option> <option value="38">38</option> <option value="39">39</option> <option value="40">40</option> <option value="41">41</option> <option value="42">42</option> <option value="43">43</option> <option value="44">44</option> <option value="45">45</option> <option value="46">46</option> <option value="47">47</option> <option value="48">48</option> <option value="49">49</option> <option value="50">50</option> <option value="51">51</option> <option value="52">52</option> <option value="53">53</option> <option value="54">54</option> <option value="55">55</option> <option value="56">56</option> <option value="57">57</option> <option value="58">58</option> <option value="59">59</option> </select>分 <input type="submit" name ="btn1" value="送信"><br> </form> <h3>フォーム2</h3> <form action="" method="POST"> <input type="text" name="day" size="5">日 <select name="hour"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">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> </select>時間 <select name="min"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">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> <option value="32">32</option> <option value="33">33</option> <option value="34">34</option> <option value="35">35</option> <option value="36">36</option> <option value="37">37</option> <option value="38">38</option> <option value="39">39</option> <option value="40">40</option> <option value="41">41</option> <option value="42">42</option> <option value="43">43</option> <option value="44">44</option> <option value="45">45</option> <option value="46">46</option> <option value="47">47</option> <option value="48">48</option> <option value="49">49</option> <option value="50">50</option> <option value="51">51</option> <option value="52">52</option> <option value="53">53</option> <option value="54">54</option> <option value="55">55</option> <option value="56">56</option> <option value="57">57</option> <option value="58">58</option> <option value="59">59</option> <option value="60">60</option> </select>分後 <input type="submit" name ="btn2" value="送信"><br> </form> </div> </body> </html>
※フォームのサブミットボタンに名前をつけて判別しています。
一つのフォームに実装する場合
<html> <head> <title>日時表示</title> </head> <body> <div> <h1>日時表示</h1> <?php if(!$_POST) { echo "現在の時刻:" . date("Y/n/j H時i分") ."<br>\r\n"; } else { echo "<h2>リクエストの結果</h2>\r\n"; $mon = $_POST["mon"]; $day = $_POST["day"]; $hour = $_POST["hour"]; $min = $_POST["min"]; if($_POST["mon"] && $_POST["day"]) { $today = getdate(); $year = ($mon < $today["mon"]) ? $today["year"] + 1 : $today["year"]; echo "指定日時:" . $year. "/" . $mon. "/" . $day . " " . $hour . "時" . $min . "分<br>\r\n"; } elseif ($_POST["day"] || $_POST["hour"] || $_POST["min"]) { echo $day . "日" . $hour . "時間" . $min . "分後:"; $day = $day * 24 * 60 * 60; $hour = $hour * 60 * 60; $min = $min * 60; $time = $day + $hour + $min; $reqday = time() + $time; echo date("Y/n/j H時i分", $reqday) . "<br>\r\n"; } } ?> <form action="" method="POST"> <select name="mon"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select>月 <select name="day"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">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> <option value="32">32</option> <option value="33">33</option> <option value="34">34</option> <option value="35">35</option> <option value="36">36</option> <option value="37">37</option> <option value="38">38</option> <option value="39">39</option> <option value="40">40</option> <option value="41">41</option> <option value="42">42</option> <option value="43">43</option> <option value="44">44</option> <option value="45">45</option> <option value="46">46</option> <option value="47">47</option> <option value="48">48</option> <option value="49">49</option> <option value="50">50</option> </select>日 <select name="hour"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">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> </select>時 <select name="min"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">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> <option value="32">32</option> <option value="33">33</option> <option value="34">34</option> <option value="35">35</option> <option value="36">36</option> <option value="37">37</option> <option value="38">38</option> <option value="39">39</option> <option value="40">40</option> <option value="41">41</option> <option value="42">42</option> <option value="43">43</option> <option value="44">44</option> <option value="45">45</option> <option value="46">46</option> <option value="47">47</option> <option value="48">48</option> <option value="49">49</option> <option value="50">50</option> <option value="51">51</option> <option value="52">52</option> <option value="53">53</option> <option value="54">54</option> <option value="55">55</option> <option value="56">56</option> <option value="57">57</option> <option value="58">58</option> <option value="59">59</option> <option value="60">60</option> </select>分 <input type="submit" value="送信"><br> ※月を指定しなかった場合、現在日時に指定した日数と時間を足して表示します。 </form> </div> </body> </html>
※複数のフォームを用意する場合の処理を、こちらの条件分岐と同じに変更しても動作します。
長文のご回答まことにありがとうございます。
当初思ってたよりも素晴らしくとても満足しています。
特に2つめのがデザイン的にも気に入っているのでこれを使いたいのですが、
「いずれの指定もない場合、デフォルトして現在の日時がechoされる。」というのが私の環境だとうまくいきません。
もし、何か思い当たることがありましたら、手直ししていただけると大変ありがたいです。