質問
xamppを使ってcsvからデータを読み込み、
インターネットエクスプローラーの画面に登録フォームと削除修正機能を付けました。
しかし、データの読み込みはできるのに削除や修正、登録がcsvに反映されません。
どうしたらいいのか全くわからないのでアドバイスいただけたら幸いです。
インターネットエクスプローラーの画面
PHP
<?php echo('<pre>'); var_dump($_POST); echo('</pre>'); $data = file_get_contents("plan.csv");//plan.csv読み込み $data = mb_convert_encoding($data,'utf-8','sjis-win');//文字コードをutf8に $data = explode("\r\n",$data);//excel csv での改行 foreach($data as $key => $value){ $line_array = explode(",",$value); if ($key == 0){ $data_key = $line_array;//1行目は$data_keyに格納 }elseif(!empty($value)){//!は否定のマーク $plans[] = array_combine($data_key,$line_array);//2行目以降は plans に格納 } } foreach($plans as $key=>$value){ $array_year[]=$value['year']; $array_month[]=$value['month']; $array_day[]=$value['day']; } array_multisort( $array_year,SORT_ASC, $array_month,SORT_ASC, $array_day,SORT_ASC, $plans ); $output_str = "id,year,month,day,content\r\n"; foreach($plans as $key=>$line){ foreach($line as $key_line=>$value_line){ $output_str=$output_str.$value_line.','; } $length=mb_strlen($output_str); $output_str=mb_substr($output_str,0,$length-1); $output_str=$output_str."\r\n"; } echo("<pre>"); var_dump($output_str); echo("</pre>"); //削除機能 foreach($plans as $key=> $value){ if(!empty($_GET['action']) AND $_GET['action']=='delete' AND $_GET['id']==$plans[$key]['id']){ unset($plans[$key]); } } //修正リンクが押された時の呼び出し機能 $default=array('id'=>'','year'=>'','month'=>'','day'=>'','content'=>''); foreach($plans as $key=>$value){ if(!empty($_GET['action']) AND $_GET['action']=='edit' AND $_GET['id']==$plans[$key]['id']){ $default=$plans[$key]; } } //登録修正機能 if(!empty($_POST)){ foreach($plans as $key=>$value){ if($_POST['id']==$plans[$key]['id']){ unset($plans[$key]); } } $new_plan=array( "id"=>$_POST['id'], "year"=>$_POST['year'], "month"=>$_POST['month'], "day"=>$_POST['day'], "content"=>$_POST['content'], ); $plans[]=$new_plan; } file_put_contents('plan.csv',mb_convert_encoding($output_str,'sjis-win','UTF-8')); ?> <html> <head> <title>プログラミング入門</title> <meta charset="UTF-8"> </head> <body> <form action="?" method="POST"> <!--action="?"の?は送信ボタンを押した次のページ--> <p>ID:<input type="text" name="id" value="<?php echo $default['id'];?>"></p> <p>年:<input type="text" name="year" value="<?php echo $default['year'];?>"></p> <p>月:<input type="text" name="month" value="<?php echo $default['month'];?>"></p> <p>日:<input type="text" name="day" value="<?php echo $default['day'];?>"></p> <p>内容:<input type="text" name="content" value="<?php echo $default['content'];?>"></p> <p><input type="submit" name="submit" value="送信"></p> </form> <h1>Plans</h1> <table border='1'> <tr> <td>id</td> <td>year</td> <td>month</td> <td>day</td> <td>content</td> <td>過去・本日・未来</td> <td>アクション</td> </tr> <?php foreach($plans as $key=>$value){ //foreach(配列asキーが代入される変数=>値が代入される変数)(繰り返される内容)?> <tr> <td><?php echo $value['id'];?></td> <td><?php echo $value['year'];?></td> <td><?php echo $value['month'];?></td> <td><?php echo $value['day'];?></td> <td><?php echo $value['content'];?></td> <td><?php if (mktime(0,0,0,$value['month'],$value['day'],$value['year'])<strtotime("today")){ echo "過去"; } elseif (mktime(0,0,0,$value['month'],$value['day'],$value['year'])==strtotime("today")){ echo "本日"; //} elseif (mktime(0,0,0,$value['month'],$value['day'],$value['year'])<=strtotime("today")+86400*7){ } elseif (mktime(0,0,0,$value['month'],$value['day'],$value['year'])<strtotime("1week")){ echo "一週間"; } else { echo "未来"; } ?></td> <td><a href="?action=edit&id=<?php echo($value['id'])?>">修正</a>|<a href="?action=delete&id=<?php echo $value['id'];?>">削除</a></td> </tr> <?php } ?> </table> </body> </html>