<input type="hidden">タグの掲示板での使い方
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 3,605
前提・実現したいこと
編集のタグを追加すれば、プログラムを実行できるのですが、
<input type="hidden">タグを用いて、編集モードかどうかを判別すしたいのですが、そのやり方がわからなくて困っています。
投稿ボタンを押したときにそれが編集なのか投稿なのかを判別することは<input type="hidden">タグを用いればできるのでしょうか?
そのやり方があればご教授願いたいです。
該当のソースコード
<?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 (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++
} //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="submit" name="toukou" value="投稿" />
</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
?>
ここに言語を入力
コード
php
試したこと
上のプログラムは編集のタグを追加したときに動いたプログラムです。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+2
出来ます。
この投稿はDBに格納されていますか?
そうであれば、PrimaryKeyがあるはずですね。
「編集」の場合は、
<input type="hidden" name="pkey" value="122">
のような形でpkeyを渡して、その値で編集対象を特定してデータを上書きするわけですよね
「投稿」の場合は、この値が空になるはずです。
ので、受け取る際にはこの値の有無を確認すればよいのでは。
質問文のソースコードを見る限り、henshuuで送っている値ですかね。
気分的に、hennsuuNoの方が番号を送ってそうな名前で混乱しそうなのがモヤモヤしますが。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
見た感じファイルベースの投稿掲示板のような感じでしょうか。
編集と投稿の判別ですが、hiddenでも可能です。
おそらく、配列管理でおこなっていらっしゃると思いますのでhiddenで編集対象の配列のインデックスを渡してあげれば良いと思います。
<input type="hidden" name="toukou_id" value="配列のキー番号">
ただ、疑問点は「投稿」でも「編集」でもボタンは「編集」になるのでしょうか?
それとも別のソースがあるのか疑問ですが、ボタンも変えたいのであれば対象のデータを選ぶときも値の存在でボタン切り替えが必要かと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/10/13 16:14
名前については申し訳ないです。
2016/10/13 16:20
回答にも書いてますが、hennsuuと言うinput nameが定義されているところで指定する番号がそれじゃないのでしょうか。
2016/10/13 16:40
試してみます。