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

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

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

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

Q&A

1回答

3296閲覧

php 掲示板 編集機能の判別の仕方

shoutikubai

総合スコア11

PHP

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

0グッド

0クリップ

投稿2016/11/04 09:12

###前提・実現したいこと
<input type="hidden">タグを用いて、編集モードかどうかを判別すしたいのですが、うまくいっていないです。
編集とわかれば編集を行い、どうでなければ投稿を行いたいです。

###発生している問題・エラーメッセージ
編集と投稿が同時に行われてしまっったり
編集が行われたあとに投稿が出来なくなってしまったりしてしまいます。
上手く$hennshuuを初期化できていないのが原因であるとも思うのですが
どうすれば上手く出来るのでしょうか。

###該当のソースコード ```php ```ここに言語を入力 PHP<?php ini_set('display_errors', 1); error_reporting(E_ALL); date_default_timezone_set('Asia/Tokyo'); $ff = ""; $newname = ""; $newcomment = ""; $err_msg1 = ""; $err_msg2 = ""; $message = ""; $name = (isset($_POST["name"]) === true) ? $_POST["name"] : ""; $comment = (isset($_POST["comment"]) === true) ? trim($_POST["comment"]) : ""; if (isset($_POST["toukou"]) === true) { if ($name === "") $err_msg1 = "名前を入力してください"; if ($comment === "") $err_msg2 = "コメントを入力してください"; if ($err_msg1 === "" && $err_msg2 === "") { $message = "書き込みに成功しました。"; } //$err_msg1 === "" && $err_msg2 === "" if(empty($_POST[toukoum])){ if (null != filter_input_array(INPUT_POST)) { $name = filter_input(INPUT_POST, 'name'); $comment = filter_input(INPUT_POST, 'comment'); if (!empty($name) && !empty($comment)) { $number = file_get_contents("counter.txt"); $name = $_POST["name"]; $comment = $_POST["comment"]; $date = date('Y-m-d-G-i'); $file_number = "numberx.txt"; $number_array = file($file_number); for ($i = 0; $i <= count($number_array); ++$i) { $number++; } //$i = 0; $i <= count( $number_array ); ++$i $comment = nl2br($comment); $fp = fopen("k_2_3.txt", "a"); fwrite($fp, "$number.<>$name<>$comment<>$date\n"); fclose($fp); $fp = fopen("numberx.txt", "a"); fwrite($fp, "$number\n"); fclose($fp); } //!empty( $name ) && !empty( $comment ) } //null != filter_input_array(INPUT_POST) } //isset($_POST["toukou"]) === true //null != filter_input_array( INPUT_POST ) } if (isset($_POST["delete"])) { $delete = $_POST["delete"]; $delCon = file("k_2_3.txt"); $a = fopen("k_2_3.txt", "w"); @fwrite($a, ""); fclose($a); for ($j = 0; $j < count($delCon); $j++) { $delDate = explode('<>', $delCon[$j]); if ($delDate[0] != $delete . ".") { $b = fopen("k_2_3.txt", "a"); @fwrite($b, $delCon[$j]); fclose($b); } //$delDate[ 0 ] != $delete . "." else { $b = fopen("k_2_3.txt", "a"); @fwrite($b, $delDate[0] . "." . "消去しました。\n"); fclose($b); } } //$j = 0; $j < count( $delCon ); $j++ } //isset( $_POST[ "delete" ] ) if (isset($_POST["hennshuu"]) === true) { $hennshuu = $_POST["hennshuu"]; $datem = file("k_2_3.txt"); for ($j = 0; $j < count($datem); $j++) { $hennshuudate = explode('<>', $datem[$j]); if ($hennshuudate[0] == $hennshuu . ".") { $newname = $hennshuudate[1]; $newcomment = $hennshuudate[2]; } //$hennshuudate[0] == $hennshuu . "." } //$j = 0; $j < count($datem); $j++ $fp = fopen("k_2_5.txt", "w"); fwrite($fp, "$hennshuu"); fclose($fp); } //isset($_POST["hennshuu"]) === true if (isset($_POST["toukoum"])) { $hennshuu = file_get_contents("k_2_5.txt"); $comment = $_POST["comment"]; $name = $_POST["name"]; $file = file("k_2_3.txt"); $filename = file_get_contents("k_2_3.txt"); for ($j = 0; $j < count($file); $j++) { $saisinn = explode('<>', $file[$j]); if ($saisinn[0] == $hennshuu . ".") { $result_arr = str_replace($saisinn[1], $name, $filename); $result_brr = str_replace($saisinn[2], $comment, $result_arr); } //$saisinn[0] == $hennshuu . "." $fp = fopen("k_2_3.txt", "w"); fwrite($fp, "$result_brr"); fclose($fp); } //$j = 0; $j < count($file); $j++ $hennshuu = "" ; } //isset($_POST["toukoum"]) ?> <?php echo $message; ?> <form action="k_2_5_3.php" method="post" > 名前を入力してください。<br/> <input type="text" name="name" value="<?php echo $name; echo $err_msg1; echo $newname; ?>" /><br/> コメント<br/> <textarea name ="comment"cols="50" rows="5"><?php echo $comment; echo $err_msg2; echo $newcomment; ?></textarea> <br> <input type="submit" name="toukoum" value="編集"> <input type="hidden" name="toukou" value="$hennshuu" /> </form> <form action="" method="POST"> 削除対象番号<input type="text" name="delete"> <input type="submit" name="deleteNo" value="削除"> </form> <form action="" method="POST"> 編集対象番号<input type="text" name="hennshuu"> <input type="submit" name="hennshuuNo" value="編集"> </form> <h2>投稿一覧</h2> <?php $file_name = "k_2_3.txt"; $ret_array = file($file_name); for ($i = 0; $i < count($ret_array); ++$i) { $line = explode('<>', $ret_array[$i]); echo ($ret_array[$i] . "<br />\n"); } //$i = 0; $i < count( $ret_array ); ++$i ?>

###試したこと
emptyを使ってみたのですが、考え方はあっていると思うのですが
名前が少しおかしいのは申し訳ないです。

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

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

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

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

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

guest

回答1

0

ちょっとどこで躓いているかわかりかねるのですが、
もう少し簡便なサンプルでテストされると良いかと思います

編集とは文書idを指定して投稿することで
idがなければ新規文書ですよね。

また投稿については一度セッションにデータを保持した上で
バリデートして、投稿データはセッションからしか渡さなければ
不正データをはじくのに役立つと思います
(セキュリティポリシー次第ですが)

投稿2016/11/04 09:32

yambejp

総合スコア114775

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問