前提
csvファイルを用いてスケジュール帳を作成しています。
年と月の値をcsvに追加できません。
原因や解決策などのご指摘をお願いします。
実現したいこと
年と月の値をcsvに追加できるようにする。
発生している問題・エラーメッセージ
年と月の値がcsvに追加できない
エラーメッセージ
該当のソースコード
php
1<?php 2 $year =''; 3 $month= ''; 4 $class="hide"; 5 6 if(isset($_GET["open"],/*$_GET["month"],$_GET["year"]*/)){ 7 $class="open"; 8 /*$month = $_GET["month"]; 9 $year = $_GET["year"];*/ 10 } 11 12 $answer = ''; 13 if(isset($_POST["select"],$_POST["num1"],$_POST["add"],$_POST["month"],$_POST["year"])){ 14 15 $month = $_POST["month"]; 16 $year = $_POST["year"]; 17 $num1 = $_POST["num1"]; 18 $num2 = $_POST["select"]; 19 if($num2 >= 32){ 20 $answer = "不明な日付"; 21 }else if($num1 == "" || ctype_space($num1)){ 22 $answer = "入力してください"; 23 $num1 ="^(\s| )+$"; 24 }else if(mb_ereg_match(' ',$num1)){ 25 $answer = "入力してください"; 26 $num1 = $_POST["num1"]; 27 }else{ 28 29 $filename = 'calendar.csv'; 30 // ファイルを開く('a'は追記モード) 31 $fp = fopen($filename, 'a'); 32 // ファイルに書き込む 33 $add_data ="\n$year,$month,$num2,$num1\n"; 34 fputs($fp, $add_data); 35 // ファイルを閉じる 36 fclose($fp); 37 38 header('Location:http://localhost/practice2/calendar.php'); 39 exit(); 40 } 41 } 42?> 43<html> 44 <style> 45 .tr{ 46 display:flex; 47 48 } 49 .deco{ 50 display:flex; 51 } 52 .hide{ 53 display:none; 54 } 55 56 .open{ 57 display:block; 58 } 59 </style> 60 61 <form action="/practice2/calendar.php" method="get" > 62 63 <select name="year" > 64 <?php 65 66 for($y=2000; $y<=2050; $y++){ 67 if ($y == $year && isset($_GET["open"])) { 68 $selected = "selected"; 69 70 } elseif ($y == 2022 && $year == "" ){ 71 $selected ="selected"; 72 }else{ 73 $selected =""; 74 } 75 echo "<option value='$y' $selected>".$y."</option>"; 76 } 77 78 ?> 79 </select>年 80 <select name="month" id=""> 81 <?php 82 for($m=1; $m<=12; $m++){ 83 if ($m == $month && isset($_GET["open"])) { 84 $selected = " selected"; 85 }elseif ($m == 9 && $month == ""){ 86 $selected = "selected"; 87 } else { 88 $selected = ""; 89 } 90 echo "<option value='$m' $selected>".$m."</option>"; 91 } 92 ?> 93 </select>月 94 <input type="submit" value="表示" name="open" method="post"> 95 96 </form> 97 <br/><?php echo $answer ?> 98 <div class="<?PHP echo $class; ?>"> 99 <?php echo $year; ?>年<?php echo $month; ?>月 100 <form action="/practice2/calendar.php" method="post" > 101 <select name="select" id="" > 102 <?php 103 if($month == 4 || $month == 6 || $month == 9 || $month == 11 ){ 104 for($i=1; $i<=30; $i++){ 105 echo '<option>'.$i.'</option>'; 106 } 107 }else if($month == 2 && $year % 4 == 0){ 108 for($i=1; $i<=29; $i++){ 109 echo '<option>'.$i.'</option>'; 110 } 111 112 }else if($month == 2){ 113 for($i=1; $i<=28; $i++){ 114 echo '<option>'.$i.'</option>'; 115 } 116 } 117 118 else{ 119 for($i=1; $i<=31; $i++){ 120 echo '<option>'.$i.'</option>'; 121 } 122 } 123 124 ?> 125 </select>日 126 127 <input type="text" name="num1"> 128 <input type="submit" value="登録" name="add" method="post"> 129 </form> 130 <br/> 131 <?php 132 if($month == 4 || $month == 6 || $month == 9 || $month == 11 ){ 133 for($i=1; $i<=30; $i++){ 134 135 ?> 136 137 <tbody> 138 <table id="targetTable" border="1"> 139 <tbody> 140 <tr class="tr"> 141 <td style="margin-right:2px;"> 142 <?php echo $i ?> 143 </td> 144 <td> 145 <?php 146 $fp = fopen('calendar.csv', 'r'); 147 $td_txt = ','; 148 $txt = ''; 149 while(($data = fgetcsv($fp)) !== false){ 150 151 if($y == isset($_GET["year"]) && $m == isset($_GET["month"]) && $i == $data[0]){ 152 if($txt == ""){ 153 $txt = htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); 154 }else{ 155 $txt .= $td_txt.htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); 156 } 157 } 158 159 } 160 echo $txt; 161 162 ?> 163 </td> 164 <?php 165 fclose($fp); 166 167 } 168 }else if($month == 2 && $year % 4 == 0){ 169 for($i=1; $i<=29; $i++){ 170 ?> 171 <tbody> 172 <table id="targetTable" border="1"> 173 <tbody> 174 <tr class="tr"> 175 <td style="margin-right:2px;"> 176 <?php echo $i ?> 177 </td> 178 <td> 179 <?php 180 $fp = fopen('calendar.csv', 'r'); 181 $td_txt = ','; 182 $txt = ''; 183 while(($data = fgetcsv($fp)) !== false){ 184 185 if($y == $year && $m == $month && $i == $data[0]){ 186 if($txt == ""){ 187 $txt = htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); 188 }else{ 189 $txt .= $td_txt.htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); 190 } 191 } 192 } 193 echo $txt; 194 195 ?> 196 </td> 197 <?php 198 fclose($fp); 199 } 200 }else if($month == 2){ 201 for($i=1; $i<=28; $i++){ 202 ?> 203 <tbody> 204 <table id="targetTable" border="1"> 205 <tbody> 206 <tr class="tr"> 207 <td style="margin-right:2px;"> 208 <?php echo $i ?> 209 </td> 210 <td> 211 <?php 212 $fp = fopen('calendar.csv', 'r'); 213 $td_txt = ','; 214 $txt = ''; 215 while(($data = fgetcsv($fp)) !== false){ 216 217 if($y == $year && $m == $month && $i == $data[0]){ 218 if($txt == ""){ 219 $txt = htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); 220 }else{ 221 $txt .= $td_txt.htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); 222 } 223 } 224 } 225 echo $txt; 226 227 ?> 228 </td> 229 <?php 230 fclose($fp); 231 } 232 } 233 234 else{ 235 for($i=1; $i<=31; $i++){ 236 ?> 237 <tbody> 238 <table id="targetTable" border="1"> 239 <tbody> 240 <tr class="tr"> 241 <td style="margin-right:2px;"> 242 <?php echo $i ?> 243 </td> 244 <td> 245 <?php 246 $fp = fopen('calendar.csv', 'r'); 247 $td_txt = ','; 248 $txt = ''; 249 while(($data = fgetcsv($fp)) !== false){ 250 if($y == $year && $m == $month && $i == $data[0]){ 251 if($txt == ""){ 252 $txt = htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); 253 }else{ 254 $txt .= $td_txt.htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); 255 } 256 } 257 } 258 echo $txt; 259 ?> 260 </td> 261 <?php 262 fclose($fp); 263 264 } 265 } 266 267 ?> 268 </tr> 269 </tbody> 270 </table> 271 </div> 272 </body> 273</html> 274 275
試したこと
$month = $_POST["month"];
$year = $_POST["year"];
を
$month = $_GET["month"];
$year = $_GET["year"];
に変更した
回答2件
あなたの回答
tips
プレビュー