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

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

ただいまの
回答率

89.13%

削除機能が動きません

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,396

EnDoo_009

score 8

 前提・実現したいこと:番号指定削除機能

簡易掲示板を作っています。
番号指定機能を作っていたのですが削除されません。

 発生している問題:削除されない

 該当のソースコード

<!-- 入力フォームを作る -->
<form action="<?= $_SERVER["PHP_SELF"]; ?>" method="post">
  名前:<br />
  <input type="text" name="name" size="20" value="" /><br />
  コメント: <br />
  <input type="text" name="comment" size="50" value="" /><br />
  <input type="submit" value="入力する" />
</form>

<!-- 削除するフォームを作る -->
<form action="" method="POST">
  削除したい番号は?<br/>
 <input type="text" name="deleteNo" size="10" value=""/><br/>
 <input type="submit" name ="delete" value="削除する"/><br/>
</form>





<table border="1"
  <tr>
    <td>書き込み内容:</td>
    <td>

      <?php
      $filename = 'misson_2.txt';
      // もし何も入力されなかったらはじく
      if (isset($_POST["name"]) && isset($_POST["commen"])) {
        $name = $_POST["name"];
        $comment = $_POST["comment"];
        $fp = fopen($filename, 'a');
        fwrite($fp, $name."<>".$comment."<>".date("Y年m月d日 H時i分s秒")."\n");
        fclose($fp);
        // ファイルを配列に入れる
        $ret_array = file( $filename );

        // 取得したファイルデータ(配列)を全て表示する
        for( $i = 0; $i < count($ret_array); ++$i ) {
        // 配列を順番にばらばらにする
           // echo $i++;
           $fileNum = (($i+1)."<>".$ret_array[$i]);
           $filepieces = explode("<>", $fileNum);

           // ばらばらに分けた要素を表示
           for( $e = 0; $e < count($filepieces); ++$e ) {
             echo $filepieces[$e];
           }
           echo "<br>\n";
           echo "<br>\n";
        }

      }elseif (isset($_POST["delete"])) {
        $delete = $_POST["deleteNo"];
        $delCon = file($filename);
        for ($j = 0; $j < count($delCon); $j++) {
          $delDate = explode("<>", $delCon[$j]);
          if ($delDate[0] == $delete) {
            array_splice($delCon, $j, 1);
            file_put_contents($filename, implode("\n", $delCon));

          }
        }
        $newFile = file($filename);
        for($i = 0; $i < count($newFile) ; ++$i ) {
        // 配列を順番にばらばらにする
           $fileNum = (($i+1)."<>".$newFile[$i]);
           $filepieces = explode("<>", $fileNum);

           // ばらばらに分けた要素を表示
           for( $e = 0; $e < count($filepieces); ++$e ) {
             echo $filepieces[$e];
           }
           echo "<br>\n";
           echo "<br>\n";
        }

      } else {
        echo '入力してください';
      }
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+3

削除の判定処理が以下のようになっています。

$delete = $_POST["deleteNo"];
~
$delDate = explode("<>", $delCon[$j]);
if ($delDate[0] == $delete) {


つまり1行を<>で分割した先頭要素と受け取った番号を比較しています。

それに対し、新規投稿時の処理は以下のようになっています。

fwrite($fp, $name."<>".$comment."<>".date("Y年m月d日 H時i分s秒")."\n");


名前<>コメント<>日時
番号ないですねぇ。
現状名前と番号を比較していることになります。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/02/13 19:57

    ありがとうございます!
    echoで番号を付けていたを忘れてファイル内にもついてると勘違いしてました。(-_-;)
    動くようになりました!!m(__)m

    キャンセル

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

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

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