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

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

ただいまの
回答率

90.35%

phpで作成中の簡易掲示板のエラーが直せない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 585

sumikko6210

score 128

phpで作った簡易掲示板に編集機能を実装中なのですが途中のデバックで詰まってしまいました。

コード
<?php

$dataFile ='bbs2.txt';
$errMsg = "";

if(isset($_POST['toukou']))
{

    $message = ($_POST['message']);

    $user = ($_POST['user']);

    $postedAt = date('Y-m-d H:i:s');



    $newData = (sizeof(file($dataFile)) + 1)."<>".$message."<>".$user."<>".$postedAt. "\n";

    $fp = fopen($dataFile,'a');
    fwrite($fp, $newData);
    fclose($fp);
}


if (isset($_POST['delete'])) {

$delete = $_POST['deleteNo'];
$delCon = file("bbs2.txt");
for ($j = 0; $j < count($delCon) ; $j++){ 
$delData = explode("<>", $delCon[$j]);

if ($delData[0] == $delete) { 
array_splice($delCon, $j, 1);
file_put_contents($dataFile, implode("\n", $delCon));

}
}
}

if (isset($_POST['edit'])){
    if(!$_POST["editNo"]){$errMsg = "★NOを入力してください<br>";}

    if(!$errMsg){
    $edit = $_POST["editNo"];
    $ediCon = file("bbs2.txt");
    for ($j = 0; $j < count($ediCon) ; $j++){ 
    $ediData = explode("<>", $ediCon[$j]);

    if ($line[0] == $edit) {
        echo "<font color=blue>NO$line[0]の書き込みを編集できます</font><br>";
        echo "<form method=POST action=keizibann2.php>";
        echo "message<input type='text' name='message' size='60' value='".$line[1]."'><br>";
        echo "user<input type='text' name='user' size='20' value='".$line[2]."'><br>";
        echo "<input type='submit' name='uwagaki' value='上書き保存'><input type='hidden' name='edit' value='" . $edit . "'>";
        echo "</form>";
        break;
        }
        }
    }
}

?>


<!DOCTYPE html>
<html lang="ja">
<head>
     <meta charset="utf-8">
     <title>簡易掲示板</title>
</head>
<body>
    <h1>簡易掲示板</h1>
     <form action="" method="POST">

        message:<input type="text" name="message">
         user:<input type="text" name="user">

          <input type='hidden' name='toukou' value=''>
         <input type="submit" value="投稿"></br></br>


     </form>

     <form action="" method="POST">
     削除対象番号<input type="text" name="deleteNo">
          <input type="hidden" name="delete" value="delete" />
         <input type="submit" name="delete" value="削除">
     </form></br></br>

     <form action="" method="POST">
     編集対象番号<input type="text" name="editNo">
          <input type="hidden" name="editNo" value="edit" />
        <input type="submit" name="edit" value="管理者編集">
     </form></br></br>


<?php

     $file=file($dataFile); // ファイルの内容を配列に格納


     foreach( $file as $value ){

     $line = explode("<>",$value);

     echo $value."<br />\n"; // 改行しながら値を表示

}

?>



</body>
</html>


試したこと
実行するとNotice: Undefined variable: line in C:\xampp\htdocs\php\keizibann2.php on line 54と出てきて54行目のif ($line[0] == $edit) {を中心に間違っていないか見たものの間違いが見当たりませんでした。
変数の間違いなどによるものなのでしょうか?
よろしくお願いいたします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+3

54行目の if ($line[0] == $edit) { の文を実行している時点では、下の方に記載している$line = explode("<>",$value);はまだ実行されてませんので、54行目時点では$line[0]なんていうものは定義されていない変数(Undefined variable)ですよね?


蛇足

phpで作成中の簡易掲示板のバグが見つからない

バグが見つからないならすべて正常動作してますよね?
適切な(困っている問題を)タイトルとしてください。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/11/30 18:35

    いただいた答えをもとに解決いたしました。ありがとうございます。

    不適切なタイトルにしてしまい申し訳ございませんでした。
    更新いたしました。

    キャンセル

0

処理が同じなら
$ediData = explode("<>", $ediCon[$j]);
とあるので$ediDataを見ればいいのではないでしょうか

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

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