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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

816閲覧

PHP 掲示板 編集機能 フォームにPOST送信できない

mofmofmof

総合スコア15

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2018/11/18 20:48

編集2018/11/19 09:54

PHPを使ってテキストファイルを利用した掲示板を作成中です。
編集機能を実装したのですが、編集番号を送信したらその番号の投稿が元のフォームに記入されるようにしたいのに、うんともすんとも言いません。
色々な質問を見てみたのですが自分じゃわかりませんでした。

何か間違っているようでしたら教えていただきたいです。

追記
投稿番号<>名前<>コメント<>送信日時
という風にテキストファイルに保存しているのですが、
削除機能を実装した際に、投稿番号にずれが生じてしまいます。
番号の重複が起こらないようにしたいです。
どのようにしたらいいかアドバイスをお願いしたいです。

解決しました編集済み

php

1<html> 2<head> 3<title>keijiban.php</title> 4</head> 5<body> 6 7<?php 8$filename="keijiban.text"; 9$name=$_POST['name']; 10$comment=$_POST['comment']; 11$postedat=date("Y/m/d H:i:s"); 12 13 14//新規追加 15if(isset($_POST['name'])&&($_POST['comment'])&&!($_POST['edit'])){ 16 $lines=file($filename); 17 foreach($lines as $line){ 18 $data=explode("<>",$line); 19 $num=0; 20 if($num<$data[0]){ 21 $num=$data[0]; 22 } 23 } 24 $num++; 25 $fp=fopen($filename,'a'); 26 fwrite($fp,$num."<>".$name."<>".$comment."<>".$postedat."<br>\n"); 27 fclose($fp); 28} 29 30//削除 31if (isset($_POST['delete'])){ 32 $delete=$_POST['delete']; 33 $lines=file($filename); 34 $fp=fopen($filename,'w'); 35 foreach($lines as $line){ 36 $data=explode("<>",$line); 37 if($data[0]!=$delete){ 38 fwrite($fp,$line); 39 } 40 } 41 fclose($fp); 42 } 43 44//編集 45$edit_num=$_POST['edit_num']; 46$lines=file($filename); 47foreach($lines as $line){ 48 $data=explode('<>', $line[0]); 49 if($edit_num==$editdata[0]){ 50 $editdata0=$editdata[0]; 51 $editdata1=$editdata[1]; 52 $editdata2=$editdata[2]; 53 $editdata3=$editdata[3]; 54 } 55} 56 57 58if(isset($_POST['name'])&&($_POST['comment'])&&($_POST['edit'])){ 59 $lines=file($filename); 60 $fp=fopen($filename,'w'); 61 $edit=$_POST['edit']; 62 foreach($lines as $line){ 63 $data=explode("<>",$line); 64 if($data[0]==$edit){//投稿番号と編集番号が一致したとき上書き 65 fwrite($fp,$edit."<>".$name."<>".$comment."<>".$postedat."<br>\n"); 66 }else{ 67 fwrite($fp,$line); 68 } 69 fclose($fp); 70 } 71 } 72 //表示 73$lines=file($filename); 74foreach($lines as $line){ 75 $data=explode("<>",$line); 76 echo $data[0].$data[1].$data[2].$data[3]."\n"; 77} 78?> 79<form action="keijiban.php" method="post"> 80<br><br> 81投稿:<br> 82 <input type="text" name="name" placeholder="名前" value="<?php echo $editdata1;?>"><br> 83 <input type="text" name="comment" placeholder="コメント" value="<?php echo $editdata2;?>"><br> 84 <input type="submit" value="投稿"><br><br> 85削除:<br> 86 <input type="text" name="delete" placeholder="削除対象番号"><br> 87 <input type="submit" value="削除"><br><br> 88編集:<br> 89 <input type="text" name="edit_num" placeholder="編集対象番号"><br> 90 <input type="submit" value="編集"> 91 <input type="hidden" name="edit" value="<?php echo $edit_num;?>"> 92</form> 93 94</body> 95</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

PHPのソースコードは上から順番に処理されますので、

<?php echo $editdata1;?>

の時点ではまだ変数に値がセットされていません。
PHPの処理を<html>より上に記述すれば大丈夫です。

追記の質問ですが、HTML上はフォームが1つのため、
どのsbumitを操作しても全データが飛んできます。
submitにnameを付けて条件分岐すれば大丈夫だと思います。

また、今回の質問とは無関係ですが、セキュリティ対策が
為されていないので公開する際はご注意ください。

投稿2018/11/19 00:52

tabuu

総合スコア2449

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

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

退会済みユーザー

退会済みユーザー

2018/11/19 02:44

別の回答にするほどのことじゃないので、よそさんの回答に便宜上ぶら下げますが、 投稿番号`$num`をデータファイル上のデータ件数+1で求めているから重複します。 データを全部チェックして、使用済み投稿番号の最大値を求めてから+1すれば、 ひとまず重複は避けられます。
mofmofmof

2018/11/19 09:42

>m6uさん 投稿番号成功しました!ありがとうございます!!
mofmofmof

2018/11/19 09:44

>tabuuさん 順番入れ替えてみたのですが、フォームの中に入力されませんでした… 他に何かありますかね…?
mofmofmof

2018/11/19 18:20

すみません、コードミスでした(-_-;) 無事にできました! ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問