phpで掲示板を制作しています。
投稿、消去のフォームは完成したのですが、編集フォームだけいくらやってもできません。
mysqlは使わず、receive.txtという名前の別テキストシートでデータは保存しています。
ベイグラントの仮想サーバーで動かしています。
やりたいことは、名前、コメントの編集機能の追加です。
編集というボタンを押したときに、編集番号、名前、コメントのどれか一つでも入力していないと入力してくださいと表示させ、すべて入力していた場合、書き換え処理を行い、編集に成功しましたという文字を表示したいです。
しかし、編集というボタンを押しても全く何も反応しない状況です。
投稿機能ではうまく動作しており、編集機能のコードを何度見直しても何が間違っているか全くわからず、行き詰っている状況です。
編集の部分のどこが間違っているのでしょうか?
ソースコードはこちらです。
php
1<?php 2 3 4 5$file="receive.txt"; 6if (file_exists($file)) { 7 $count = count(file($file))+1; 8} else { 9 $count = 1; 10 } 11$err_msg1 = ""; 12$err_msg2 = ""; 13$message =""; 14$edfile = file('receive.txt'); 15$name=( isset( $_POST["name"] ) === true ) ?$_POST["name"]: ""; 16$text=( isset( $_POST["text"] ) === true ) ?$_POST["text"]: ""; 17$data=($count."<>".$name."<>".$text."<>" .date('H:i:s'). "\n"); 18 19 20if ( isset($_POST["posting"] ) === true ) { 21 22 if ( $name === "" ) $err_msg1 = "名前を入力してください"; 23 24 if ( $text === "" ) $err_msg2 = "コメントを入力してください"; 25 26 if( $err_msg1 === "" && $err_msg2 ===""){ 27 $fp = fopen( "receive.txt" ,"a" ); 28 fwrite( $fp , $data); 29 $message ="投稿に成功しました。"; 30 } 31 } 32 33 34 35 36 37// 消去フォーム 38if (isset($_POST['delete'])) { 39 $delete = $_POST["delete"]; 40 $delfile = file('receive.txt'); 41 42 $fp = fopen("receive.txt", "w"); 43 for ($i = 0; $i < count($delfile); $i++) { 44 $deldate = explode("<>", $delfile[$i]); 45 if ($deldate[0] !== $delete) { 46 fwrite($fp, $delfile[$i]); 47 } else { 48 fwrite($fp, "消去しました。\n"); 49 } 50 } 51 fclose($fp); 52} 53 54// 編集フォーム 55 56$err_msg3 = ""; 57$err_msg4 = ""; 58$err_msg5 = ""; 59$message2 =""; 60$edfile = file('receive.txt'); 61$renum=( isset( $_POST["renum"] ) === true ) ?$_POST["renum"]: ""; 62$rename=( isset( $_POST["rename"] ) === true ) ?$_POST["rename"]: ""; 63$retext=( isset( $_POST["retext"] ) === true ) ?$_POST["retext"]: ""; 64$redata=($count."<>".$rename."<>".$retext."<>" .date('H:i:s'). "\n"); 65 66 67if ( isset($_POST["edit"] ) === true ) { 68 if ( $renum === "" ) $err_msg3 = "番号を入力してください"; 69 70 if ( $rename === "" ) $err_msg4 = "名前を入力してください"; 71 72 if ( $retext === "" ) $err_msg5 = "コメントを入力してください"; 73 74 if( $err_msg3 === "" && $err_msg4 ==="" && $err_msg5 ===""){ 75 $fp = fopen("receive.txt", "w"); 76 for ($i = 0; $i < count($edfile); $i++) { 77 $editraw = explode("<>", $edfile[$i]); 78 if ($editraw[0] === $renum) { 79 fwrite($fp, $redata); 80 $message2 ="編集に成功しました。"; 81 } 82 } 83 } 84 } 85 86 87 88 89?> 90
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<title>掲示板</title> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 7 <link rel="stylesheet" href="./styles.css" type="text/css"> 8</head> 9<body> 10<h1>掲示板</h1> 11<section> 12 <h2>新規投稿</h2> 13 <form action="index.php" method="post"> 14 名前 : <input type="text" name="name" > <?php echo $err_msg1; ?><br> 15 コメント: <input type="text" name="text" > <?php echo $err_msg2; ?><br> 16 <input type="submit" value="投稿" name="posting"><br> 17 <?php echo $message; ?> 18 </form> 19 20 <h2>投稿編集</h2> 21 <form action="index.php" method="post"> 22 編集番号 <input type="number" name="renum"> <?php echo $err_msg3; ?><br> 23 名前: <input type="text" name="rename" ><?php echo $err_msg4; ?><br> 24 コメント: <input type="text" name="retext" > <?php echo $err_msg5; ?><br> 25 <input type="submit" value="編集" neme="edit"><br> 26 <?php echo $message2; ?> 27 </form> 28 29 <h2>消去</h2> 30 <form action="index.php" method="post"> 31 消去番号 <input type="number" name="delete"> 32 <input type="submit" value="消去"> 33 </form> 34</section> 35<section> 36 <h2>投稿一覧</h2> 37</section> 38<?php 39// 読み込むファイル名の指定 40$file_name = "receive.txt"; 41// ファイルを全て配列に入れる 42$ret_array = file( $file_name ); 43 44// 取得したファイルデータ(配列)を全て表示する 45for( $i = 0; $i < count($ret_array); ++$i ) { 46// // 配列を順番に表示する 47 echo ( $ret_array[$i] . "<br />\n" ); 48} 49 ?> 50</body> 51</html>
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー