Macで予定表のサイトを作る練習をしています。(予定は追加もできて、削除も可能)
しかし、以下のコードでlocalhostでサイトを開くと多くの不具合が起きてしまいます。
どこを直せば良いのでしょうか?
以下はコードとエラー文です。
PHP
1<?php 2 3$data=file_get_contents("plan.csv");//指定したファイルを読み込む 4//$data=substr($data,3); 5 6//plans配列作る 7$data=explode("\r",$data);//改行は\r 8 9foreach($data as $key =>$value){ 10 $line_array=explode(",",$value);//カンマで分割して配列化 11 if($key==0){ 12 //コンバイン用配列を作成 13 $data_key=$line_array; 14 }elseif(!empty($value)){ 15 $plan[]=array_combine($data_key,$line_array);//連想配列にして代入 16 } 17} 18echo("<pre>"); 19var_dump($plan); 20echo("</pre>"); 21 22 23?><!DOCTYPE html> 24<html lang="ja"> 25<head> 26<title>練習</title> 27<meta charset="UTF-8"> 28</head> 29<body bgcolor="e6e6fa"> 30 31<form action="?" method="POST"> 32<!-- method=postの時には入力されたものが $_POST['XXXX']に格納される --> 33<p>ID:<input type="text" name="id" value="<?php echo $default["id"];?>"></p> 34 <p>年:<input type="text" name="year" value="<?php echo $default["year"];?>"></p> 35 <p>月:<input type="text" name="month" value="<?php echo $default["month"];?>"></p> 36 <p>日:<input type="text" name="day" value="<?php echo $default["day"];?>"></p> 37 <p>内容:<input type="text" name="content" value="<?php echo $default["content"];?>"></p> 38 <p><input type="submit" name="submit" value="送信"></p> </form> 39 40 41<table border='1'> 42<tr> 43<td>id</td> 44<td>year</td> 45<td>month</td> 46<td>day</td> 47<td>content</td> 48<td>過去、本日、未来、一週間以内</td> 49</tr> 50 51 52<?php 53foreach($plan as $key => $value){ 54 // $plansの中身の数だけ繰り返す 55 // $keyにキーが格納され、$valueに値が格納される 56 $array_year[]=$value['year'] ; 57 $array_month[]=$value['month'] ; 58 $array_day[]=$value['day'] ;} 59 60 //削除機能 61 foreach($plan as $key =>$value){ 62 if(!empty($_GET['action'])== 'delete' AND $_GET['id'] == $plan[$key]['id']) { 63 unset($plan[$key]); 64 } 65 } 66 67 //修正リンクが押された 68 $default=array( 69 "id"=>"", 70 "year"=>"", 71 "month"=>"", 72 "day"=>"", 73 "content"=>"", 74 ); 75 76 foreach($plan as $key =>$value){ 77 if(!empty($_GET['action'])== 'edit' AND $_GET['id'] == $plan[$key]['id']) { 78 $default=$plan[$key]; } 79 } 80 81 //登録機能 82 if(!empty($_POST)){ //フォームの送信ボタンが押された 83 84 //指定されたidのものがすでにあればそれを消す 85 foreach($plan as $key =>$value){ 86 if(!empty($_POST['id'] == $plan[$key]['id'])){ 87 unset($plan[$key]); 88 } 89 } 90 91 92 $new_plan=array( 93 "id"=>$_POST["id"], 94 "year"=>$_POST["year"], 95 "month"=>$_POST["month"], 96 "day"=>$_POST["day"], 97 "content"=>$_POST["content"], 98 ); 99 100 $plan[]=$new_plan; 101 } 102 103 //降順に並び替える 104 array_multisort($array_year,SORT_ASC, 105 $array_month,SORT_ASC, 106 $array_day,SORT_ASC, 107 108 $plan); 109 110 111 //保存用の文字列を作る 112 $output_str="id,year,month,day,content \r"; 113 114 //各行に対して処理するためのループ 115 foreach($plan as $key => $line){ 116 // echo('<pre>'); 117 //var_dump($line); 118 //echo('</pre>'); 119 120 foreach($plan as $line => $value_line){ 121 //echo('<pre>'); 122 //var_dump($value_line); 123 //echo('</pre>'); 124 $output_str=$output_str.$value_line.","; 125 } 126 //最後のカンマを削除 127 $length = mb_strlen($output_str);// 128 $output_str = mb_substr($output_str, 0, -1);//元に文字列の最初(0)から、元の文字列の長さ−1を取り出す 129 130 $output_str=$output_str."\r"; 131 132 133file_put_contents('plan.csv',mb_convert_encoding($output_str,'sjis-win','UTF-8')); 134 135?> 136 137 138<tr> 139<td><?php echo $plan[$key]['id']?></td> 140<td><?php echo $plan[$key]['year']?></td> 141<td><?php echo $plan[$key]['month']?></td> 142<td><?php echo $plan[$key]['day']?></td> 143<td><?php echo $plan[$key]['content']?></td> 144<td><?php 145 146//if(予定のタイム < 今日のタイム) 147if(mktime(0,0,0,$value["month"],$value["day"],$value["year"])<strtotime("today")){ 148 echo "過去"; 149} elseif (mktime(0,0,0,$value["month"],$value["day"],$value["year"])==strtotime("today")){echo "本日"; 150} elseif(mktime(0,0,0,$value["month"],$value["day"],$value["year"])<=strtotime("+7 day")){echo "一週間以内";} 151 152else { 153 echo "未来"; 154} 155?> 156 157 158</td> 159<td><a href="?action=edit&id=<?php echo $plan[$key]['id']?>">修正</a></td> 160<td><a href="?action=delete&id=<?php echo $plan[$key]['id']?>">削除</a></td> 161</tr> 162 163<?php } ?> 164 165</table>
・Undefined variable: default in/Applications/XAMPP/xamppfiles/htdocs/PHP/PHP/ss10-4.php on line 45 ・Array to string conversion in /Applications/XAMPP/xamppfiles/htdocs/PHP/PHP/ss10-4.php on line 133 ・Warning: file_put_contents(plan.csv): failed to open stream: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/PHP/PHP/ss10-4.php on line 147 ・Undefined index: id in /Applications/XAMPP/xamppfiles/htdocs/PHP/PHP/ss10-4.php on line 158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。