質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

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

Q&A

2回答

270閲覧

PHPで掲示板の投稿削除

tom-omi

総合スコア4

PHP

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

0グッド

1クリップ

投稿2017/10/20 00:20

PHPで掲示板の特定の行の削除をしたいのですが、勉強不足でどこが間違っているのかがわかりません。また、If文の中身をサイトを参考に作ったのでどういった動作がされているのかあまり理解ができていないです。間違っている点、動作内容を併せて教えてくださると幸いです。
###発生している問題・エラーメッセージ
ホームページに表示させると、HTTP 500と表示されます

###該当のソースコード

<!DOCTYPE html> <html lang = "ja"> <html> <head> <meta charset = "UFT-8"> <title>旅行記</title> </head> <body> <h2>ほのぼの旅行記</h2> <form action=""method="post"> 名前<br/> <input type="text" name="name" value=""/><br/> コメント<br/> <input type="text" name="comment" value=""/><br/> <br/> <input type="submit" value="送信" /><br/> <br/> </form> </body> </html> <html> <body> <form action=""method="post"> 削除番号<br/> <input type="number" name="delcode" value=""/><br/> <br/> <input type="submit" name="delete" value="削除"> <br/> </form> </body> </html> <?php //名前・コメント・時間を受け取り関数に導入; $message=$_POST['name']; $comment=$_POST['comment']; $time=date('Y-m-d H-i'); //受け取ったデータを繋げてまとめている; $data=$message."<>".$comment."<>".$time; //kadai2-2を関数に導入; $filename='kadai2-2.txt'; //echo $filename; $fp=fopen($filename,'r'); for($count=1; fgets($fp);$count++); //fgets()で1行ずつ読み込み、その読み込んだ回数をカウントして、+1する; $fp=fopen($filename,'a'); fwrite($fp,$count++."<>".$data."\n"); //数えた数とデータを組み合わせて書き込み; fclose($fp); //読み込むファイル名の指定 $filename='kadai2-2.txt'; //ファイルを全て配列に入れる $ret_array=file ($filename); $ret_array=array_reverse($ret_array) /*if文で条件分岐 if(削除項目の入力があったら){ 読み込んで行のカウント{ if(行がゼロより大きかったら) } */ $newdata=$count++."<>".$data."\n"; if(isset($_POST['delete'])){ for($i=0;$i<count($ret_array);$i++){ $items=explode("\t",$ret_array[$i]); if($items[0]=="<{$_POST['delcode']}>"){ $ret_array[$i]="";} } $newdata=array_reverse($ret_array); $newdata=implode("\n",$newdata)."\n"; write($filename,$newdata,"w"); } //取得したファイルデータを全て表示する for($i=0; $i<count($ret_array); ++$i){ //繰り返し表示; $str=explode("<>",$ret_array[$i]); //要素分割 echo ($str[0]."<br />\n"); echo ($str[1]."<br />\n"); echo ($str[2]."<br />\n"); echo ($str[3]."<br />\n"); //分割した要素の表示 } ?>

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)
自主的な学習で学校の課題ではありません。

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

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

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

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

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

guest

回答2

0

サイトのスクリプトが必ずしも正しい動作を行うとは限りません。
自身で確認する環境を整える事が独学で php を学ぶためには必要です。

まず、ステップ実行が可能なデバッグ環境を整えてください。
そうすることで、変数の推移が確認できるようになり、スクリプトへの理解が格段に進みます。
ネット上の情報で環境が構築できれば、それでも良いですが、多分、まだスキル不足で構築できないと思います。
ご自身の環境(OS等)にあった環境構築方法の記述のある本で、体系的な学習をされることをオススメします。

投稿2017/10/20 00:42

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tom-omi

2017/10/20 01:25

回答ありがとうございます。本で学習してみたいとおもいます。
guest

0

とりあえず画面が見えるよう
以下の部分で**;**が足りません

$ret_array=array_reverse($ret_array); /*if文で条件分岐

おそらくApacheだと思わるのでhttpd.confで設定した
ErrorLog エラーログ出力先
にエラーが保存されているので確認してみて下さい

投稿2017/10/20 01:56

date

総合スコア1820

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

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

tom-omi

2017/10/20 04:03

ありがとうございます。;が足りないことに気づいてなかったです。エラーの確認します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問