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

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

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

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

Q&A

0回答

5549閲覧

簡易掲示板の編集機能

ak_spy_

総合スコア6

PHP

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

0グッド

0クリップ

投稿2017/12/20 12:51

編集2022/01/12 10:55

以下のコードで簡易掲示板に名前・コメント入力・送信後に削除・編集を試みています。削除までは問題なく機能しており、編集内容を入力する用のフォームにて該当の番号を入力すると元、の内容が編集用のフォーム内に表示されるようになっています。
ですが、いざ内容を変えようと新たな名前・コメントを入力してもその内容が反映されない、といった状態です。
php下部の「//以下編集処理」の下からがおかしいためだと思うのですが、何をどうすれば良いのかがわからない状態です。
ご回答頂けると幸いです。また、加えまして、編集依頼を下さった方々、更新が遅くなり大変申し訳ございません。

HTML/PHP

1<html> 2<head> 3<meta charset="UTF-8"> 4<title>Tell me about yourself</title> 5</head> 6<body> 7 8<h1>name and comment please</h1> 9<form action="mission_2-5.php" method="post"> 10 名前:<br/> 11 <input type="text" name="namae" size="30"><br/> 12 13 コメント:<br/> 14 <textarea name="comment" colos="30" rows="5"></textarea><br/> 15 <input type="submit" value="登録する"/> 16 <br/> 17 </form> 18 19<form action="mission_2-5.php" method="post"> 20 削除対象番号:<br/> 21 <input type="text" name="delection" size="30"><br/> 22 <input type="submit" value="削除"/> 23 </form> 24 25 26 27<?php 28//2-2.2-3 29 30$comment=null; 31$namae=null; 32 33 34if (!isset($comment) || !isset($namae)){ 35 $comment=$_POST['comment']; 36 $namae=$_POST['namae']; 37} 38 39 40$time=date("Y/m/d H:i:s",time());//時間 41 42 43$filename="mission_2-5.txt"; 44 45$fp=fopen($filename,'a+'); 46 47$file=file($filename);//file関数→ファイルの内容全てを取得し配列に格納する。$filenameを読み込み$fileにパス 48 49$count=count($file);//ファイルの行数カウント&$countに代入 50 51$number=explode("<>",$file[$count-1]); 52 53$next=$number[0]+1;// 54 55$text=$next."<>".$namae."<>".$comment."<>".$time;//最後の番号+1が次の番号になる 56 57 58if(isset($_POST['namae']) && isset($_POST['comment'])){ 59 fwrite($fp,"$text\n"); 60} 61 62fclose($fp); 63 64 65 66//2-4 67if(isset($_POST['delection'])){ 68 69 $dell=$_POST['delection']; 70} 71 72 73if(isset($_POST['delection'])){ 74 $fp=fopen($filename,'w+'); 75 for($k=0; $k<count($file); ++$k){ //count(要素数えたい配列 , モード),$fileの要素が$kより多いとき→$kに1加える 76 $deldata=explode("<>",$file[$k]); 77 78 if($deldata[0]!=$dell){ 79 fwrite($fp,"$file[$k]"); 80 } 81 } 82 83fclose($fp); 84 85} 86 87 88 89$file = file($filename); 90 91foreach($file as $text2){ //配列数の分繰り返し処理をする, 配列変数 as 配列変数から取り出した値を格納する変数 92 $text_array = explode("<>",$text2); 93 echo $text_array[0].$text_array[1].$text_array[2].$text_array[3]."<br>"; 94} 95 96 97 98 99//2-5 100 101//error_reporting(E_ALL); 102//ini_set('display_errors', 'On'); 103 104$edit_num = $_POST["hensyunumber"]; 105$user = ""; 106$text = ""; 107$time=date("Y/m/d H:i:s",time()); 108 109 110//編集用フォームに元の内容を表示させる処理 111if (isset($_POST['hensyu'])){//編集ボタンが押されたとき(trueのときの処理) 112 113 $fp=fopen($filename,'a+'); 114 115 $edit_num = $_POST['hensyunumber']; 116 117 $filedata =file( "mission_2-5.txt");//ファイルを一行ずつの配列として読み込み、変数への配列化 118 119 for($k=0; $k<count($filedata); ++$k){ //for…"ある条件が成り立っている間" 120 /*count(要素数えたい配列 , モード),$fileの要素が$iより多いとき→$iに1加える 121 一行目の行数・名前・コメントだけでなく$data[0]が行数、$data[1]が名前…を必ず指定するようにループ処理をする*/ 122 $data = explode("<>", "$filedata[$k]"); 123 //explode関数:文字列を指定した区切り文字によって分割し、配列に格納。第1引数で区切り文字を、第2引数で対象となる文字列を指定 124 $edit_num = $data[0]; 125 126 //取り出し用フォームの分岐 127 if($data[0] == $edit_num){//編集番号が$edit_numと一致したら 128 129 $user = $data[1];//編集用フォームに元の内容を表示 130 131 $text = $data[2];//編集用フォームに元の内容を表示 132 133 $hyouzi = $user.$data; 134 135 }else{ //else=falseのときの処理。一致しない時はもとのデータをそのまま書き込み(if~else文) 136 fputs($fp, $filedata);//元の一行をファイルに追記 137 } //if~else終わり 138 } //for終わり 139 140fclose($fp); 141}//if終わり 142 143 144//以下編集処理 145if (isset($_POST['edit_num'])){//edit_numフォームに入力があるとき 146 147 $file_edit = file("mission_2-5.txt"); //テキストファイルのデータを一行ずつ配列化・保存することにより編集が可能になる 148 149 $fp = fopen("mission_2-5.txt", 'w+');//内容を消して開き、ファイルポインタ取得 150 151 $edit_num = $_POST['hensyunumber']; 152 153 for($l = 0;$l <count($file_edit); ++$l){ 154 155 $editdata = explode("<>",$file_edit[$l]); 156 157 if($editdata[0] == $edit_num){//入力した編集番号と一致するとき 158 159 $user = $editdata[1]; 160 161 $text = $editdata[2]; 162 163 $text = $edit_num[0]."<>".$user."<>".$text>"<>".$time; 164 165 fputs($fp.$text); 166 167 }//if終わり 168 }//for終わり 169}//if終わり 170 171 172 173 174 175 176?> 177 178 179<form action="mission_2-5.php" method="post"> 180 181 編集対象番号:<br/> 182 <input type="text" name="hensyunumber" size"5" value=""/> 183 <input type="submit" value="編集" name="hensyu"/> 184 </form> 185 186<form action="mission_2-5.php" method="post"> 187 <input name = "edit_num" type = "hidden" value = "<?php echo $edit_num;?>"/><br> 188 <input name = "user" type = "text" value = "<?php echo $user;?>"/> 189 <input name = "text" type = "text" value = "<?php echo $text;?>"/> 190 <button type = "submit"> 送信</button> 191 </form> 192 193 194</body> 195</html>

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

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

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

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

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

sublimer

2017/12/20 13:04

同じ質問を2回投稿されていますね。どちらかを削除してください。
ak_spy_

2017/12/20 13:54

大変失礼致しました。一方を削除いたします。
masaya_ohashi

2017/12/21 00:14

どっちを削除するのですか?削除する方の質問の先頭に「削除依頼中です」等の追記をしないと、「削除されるかもしれない方に回答を書いてしまうかもしれない」とみんなが及び腰になって誰も回答してくれないですよ。
yambejp

2017/12/21 00:51

クォーテーションの抜けや全角記載など明らかにおかしい点がいくつか見受けられます。まずはそこを直すところからでしょうね
ak_spy_

2017/12/21 01:01

配慮が足りず、申し訳ございません。こちらを残し、もう一方は削除致します。仰って頂いたように、もう一方の方の先頭部にその旨記載致しました。
退会済みユーザー

退会済みユーザー

2017/12/21 03:10

<input name> と $_POST 一致するものがないので正しいものをあげてください
kei344

2017/12/24 09:29

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
ak_spy_

2017/12/24 12:00

ご指摘ありがとうございます。何分こちらの利用が初めてでして…見づらいものを提示してしまい、申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問