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

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

ただいまの
回答率

87.34%

簡易掲示板の削除機能

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 879

score 6

phpを学び始めたばかりの初心者です。
初心者すぎてどうしたら良いか全く見当がつかなくなってしまい、質問させて頂きました。
何かが足りないことは理解出来たのですが、何を足せばいいのか行き詰まっています。
どうか皆様のお力をお貸し頂きたいです。よろしくお願い致します。

前提・実現したいこと

簡易掲示板に削除機能の実装

発生している問題・エラーメッセージ

Parse error: syntax error, unexpected end of file in /public_html/mission_3-3.php on line 55

該当のソースコード

<html>
<head>
    <meta charaset="UTF-8">
</head>
<body>
<?php
$textfile='mission_3-1.txt';
 if($_POST['send_delete']){
    $pass=@file($textfile);
    $pass_keys=explode("<>",$pass[$_POST['delete']-1]);

if(isset($_POST['delete'])and $_POST['send_delete']){
     $delete=$_POST['delete'];
     $texts_delete=file($textfile);
//指定した番号以外を書き込み
    foreach($texts_delete as $key_delete=>$val_delete){
    $texts_delete_element=explode("<>",$val_delete);
    if($texts_delete_element[0]=$delete){
    unset($texts_delete[$key_delete]);}}
    file_put_contents("mission_3-1.txt",$texts_delete);}
?>
</br>
<form action="" method="post">
<input type="text" name="name" placeholder="名前"><br>
<input type="text" name="comment" placeholder="コメント">
<input type="submit" value="送信"><br><br>
<input type="text" name="delete" placeholder="削除対象番号">
<input type="submit" name="send_delete" value="削除">
</form>
</body>
</html>
<?php
 function h($str){
 return htmlspecialchars($str,ENT_QUOTES,'UTF-8');}
    $textfile="mission_3-1.txt";
    $date=date("Y/m/d H:i:s");
    $fp=fopen($textfile,"a");
 if(isset($_POST['comment'])){
    $num=count(file($textfile));
    $num++;
 fwrite($fp,$num.'<>'.$_POST['name'].'<>'.$_POST['comment'].'<>'.$date."\n");}
 fclose($fp);
    $array=file($textfile,FILE_SKIP_EMPTY_LINES);
 if(isset($_POST['comment'])){
    $comment=$_POST['comment'];
    $name=$_POST['name'];
    foreach($array as &$word){
    $words=explode('<>',$word);
    $keys_export_num=count($words);
    if($words!==$keys_export_num-2){
    echo $words[0].' ';
    echo $words[1].' ';
    echo $words[2].' ';
    echo $words[3]."<br>";}}}
?>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/10/18 06:46

    >何かが足りないことは理解出来たのですが、

    その理解できた理由や前提なども書かれた方が回答者も質問者の認識にあわせて回答できますので

    回答ではないのでこちらに書きますとテキストファイルをデータベースとする掲示板プログラムの質問が数多投稿されていますが、テキストファイルをデータベースとしたプログラムを学んでも役に立つ場面は皆無です。データベースはデータベース、MySQLなどを利用する方向に早々に切り替えられた方が良いかと思います。

    キャンセル

  • yuunyanu

    2019/10/19 19:58

    コメントありがとうございます!
    理解した理由としては、エラーメッセージがそういう内容であったからです。
    私自身もタグを組み立てる際に調べていて、テキストファイルをデータベースとするプログラムは今は一般的では無いと感じていました。
    テキストに従って学んでいるので、初心者はそちらから学んだ方が良いと判断されているのかもしれません。m.ts10806様の仰る方の勉強も進めたいと思います。

    キャンセル

回答 1

checkベストアンサー

+2

}が一つ足りないようです。
コード整形ツールなどで括弧の対応をわかりやすくすることをお勧めします。

【PHP Formatter - PHP Beautifier - PHP Pretty Printer - Home】
http://www.phpformatter.com/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/18 06:47 編集

    できれば今後のためにもIDE導入して構文チェックまでしてもらったほうがより良いですね

    キャンセル

  • 2019/10/19 19:43

    ご回答ありがとうございます!
    初歩的にもすぎるミスでお恥ずかしい限りです・・・;;
    ご指摘頂いたところ等少し調整をしたところ、エラーは消えましたが、削除がきちんと機能しないので、どこがおかしいのか探したいと思います。

    キャンセル

  • 2019/10/19 19:50

    if($_POST['send_delete']) の中に if (isset($_POST['comment'])) があり、コメントさえ入っていたら追加されているのは想定内でしょうか。

    キャンセル

  • 2019/10/19 20:58

    まず順番を逆にし、if(isset($_POST['comment']))の中にif($_POST['send_delete'])を組み込み、初めの画面でNotice~と出てしまうためif(isset($_POST['send_delete']))に変換しました。
    すると、表示が初めからになり、コメントが入っていなくても削除番号が入っていたら表示され、削除も機能しない状況になりました。テキストファイルには追加もされなければ、削除もされません。
    なので、理解してたつもりでよくわからなくなっていまして・・・ifがたくさんあるために「あれ?ここにも影響してる?」というのを繰り返しています(__;)

    キャンセル

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

  • ただいまの回答率 87.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る