西暦を入力するときに、月によって表示される日を異なるように以下のコードを書いてみました。
sample8.phpというページで、適当な数字を渡します。その数字によって表示される日付を変えたいのですが、うまくいきません。
php
1<?php 2 $i = $_POST['number']; 3?> 4 5<html> 6 <body> 7 <h1>西暦フォーム</h1> 8 <label for = 'year'>西暦</label> 9 <select name = 'year'> 10 <?php 11 $now = date('Y'); 12 for($i = 1950; $i <= $now; $i++) 13 { 14 ?> 15 <option value = '<?php echo $i; ?>'><?php echo $i; ?> 16 <?php 17 } 18 ?> 19 </select>年 20 <select name = 'month'> 21 <?php 22 for($iii = 1; $iii <= 12; $iii++) 23 { 24 ?> 25 <option value = '<?php echo $iii; ?>'><?php echo $iii; ?> 26 <?php 27 } 28 ?> 29 </select>年 30 <select name = 'date'> 31 <?php 32 if($i === 1||$i === 3||$i === 5||$i === 7||$i === 8||$i === 10||$i === 12){ 33 for($ii = 1; $ii <= 31; $ii++) 34 { 35 ?> 36 <option value = '<?php echo $ii; ?>'><?php echo $ii; ?> 37 <?php 38 } 39 } 40 ?> 41 <?php 42 if($i === 4||$i === 6||$i === 9||$i === 11){ 43 for($ii = 1; $ii <= 30; $ii++) 44 { 45 ?> 46 <option value = '<?php echo $ii; ?>'><?php echo $ii; ?> 47 <?php 48 } 49 } 50 ?> 51 </select>年 52 <?php 53 if($i === 2){ 54 for($ii = 1; $ii <= 28; $ii++) 55 { 56 ?> 57 <option value = '<?php echo $ii; ?>'><?php echo $ii; ?> 58 <?php 59 } 60 } 61 ?> 62 </body> 63</html> 64
一番上の$iが前のページにて受けた入力です。本当は同じページで月を入力して、その数字を反映したいのですが、ちょっとレベルが高そうだったので、今回の様な形にしました。
今のままだと、日付を選択するところだけ表示されません。
どなたか、よろしくお願い致します。
どううまくいかないのですか?また、どうなってほしいのですか?修正の前後の姿がわからないと回答のしようがないです。質問本文は修正できますので、追記をお願いします。
了解しました。
$i を使いまわしてるからって話では?
本筋とは関係ないですが、日付を入力させるのが<select>なのは正直ユーザーから見るとつらいです。2000年を入力したいときは50個も不要な項目をずらーっと流していかないといけないですよね。
<input type="number" min="1950" max="<?php echo date('Y'); ?>"> にするとか、
<input type="date"> とかにしたほうがよくないですか?
@talasima20さん
ご回答ありがとうございます。使いまわしていることに気づいていませんでした。ですが、変えてみてもできませんでした…。
@thyda.eiqauさん
ご回答ありがとうございます。なるほど、そうですよね、わかりづらいですよね…
勉強に使っていたものをちょこっと変えたものなので…ご指摘ありがとうございます。
回答2件
あなたの回答
tips
プレビュー