🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

3回答

686閲覧

【PHP】エラーが出ますが、どこがおかしいか分かりません。

Robinson

総合スコア8

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

0クリップ

投稿2019/11/27 13:02

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

エラーメッセージの読み方と対処, 検索や質問の原則 

まずは「エラーは人に聞いた方が早い」という考えを捨てましょう。
世界で初めてあなたがぶちあたるエラーではありません。

teratail内だけでも結構あります。

teratail: [Undefined variable:] の検索結果: 557件

teratail: [Undefined variable: tag:PHP] の検索結果: 221件

初学者の内に起きる問題やエラーのほとんどは
そのエラーを調べる→デバッグをする→PHPマニュアルを確認する
で解決できます。

投稿2019/11/27 14:02

編集2019/11/27 14:11
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラー文は極めて的確に状況を示しています。
エラー文を理解するところ方始めると良いですよ。

投稿2019/11/27 13:07

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/27 13:08

かぶったw
guest

0

Undefined variable:

変数が定義されてない、というエラーです。
せっかくエラーの行を提示してくれるのですから、そこをよく見てみましょう

投稿2019/11/27 13:05

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問