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

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

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

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

Q&A

解決済

2回答

5486閲覧

<input type="hidden">タグの掲示板での使い方

shoutikubai

総合スコア11

PHP

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

0グッド

0クリップ

投稿2016/10/13 06:27

###前提・実現したいこと
編集のタグを追加すれば、プログラムを実行できるのですが、
<input type="hidden">タグを用いて、編集モードかどうかを判別すしたいのですが、そのやり方がわからなくて困っています。
投稿ボタンを押したときにそれが編集なのか投稿なのかを判別することは<input type="hidden">タグを用いればできるのでしょうか?
そのやり方があればご教授願いたいです。

###該当のソースコード

php

1<?php 2ini_set('display_errors', 1); 3error_reporting(E_ALL); 4date_default_timezone_set('Asia/Tokyo'); 5$ff = ""; 6$newname = ""; 7$newcomment = ""; 8$err_msg1 = ""; 9$err_msg2 = ""; 10$message = ""; 11$name = (isset($_POST["name"]) === true) ? $_POST["name"] : ""; 12$comment = (isset($_POST["comment"]) === true) ? trim($_POST["comment"]) : ""; 13 14if (isset($_POST["toukou"]) === true) { 15 if ($name === "") 16 $err_msg1 = "名前を入力してください"; 17 if ($comment === "") 18 $err_msg2 = "コメントを入力してください"; 19 if ($err_msg1 === "" && $err_msg2 === "") { 20 $message = "書き込みに成功しました。"; 21 } //$err_msg1 === "" && $err_msg2 === "" 22 23 24 if (null != filter_input_array(INPUT_POST)) { 25 $name = filter_input(INPUT_POST, 'name'); 26 $comment = filter_input(INPUT_POST, 'comment'); 27 if (!empty($name) && !empty($comment)) { 28 $number = file_get_contents("counter.txt"); 29 $name = $_POST["name"]; 30 $comment = $_POST["comment"]; 31 $date = date('Y-m-d-G-i'); 32 $file_number = "numberx.txt"; 33 $number_array = file($file_number); 34 35 for ($i = 0; $i <= count($number_array); ++$i) { 36 $number++; 37 } //$i = 0; $i <= count( $number_array ); ++$i 38 $comment = nl2br($comment); 39 $fp = fopen("k_2_3.txt", "a"); 40 fwrite($fp, "$number.<>$name<>$comment<>$date\n"); 41 fclose($fp); 42 $fp = fopen("numberx.txt", "a"); 43 fwrite($fp, "$number\n"); 44 fclose($fp); 45 } //!empty( $name ) && !empty( $comment ) 46 } //null != filter_input_array(INPUT_POST) 47} //isset($_POST["toukou"]) === true 48//null != filter_input_array( INPUT_POST ) 49 50 51 52 53if (isset($_POST["delete"])) { 54 $delete = $_POST["delete"]; 55 $delCon = file("k_2_3.txt"); 56 $a = fopen("k_2_3.txt", "w"); 57 @fwrite($a, ""); 58 fclose($a); 59 for ($j = 0; $j < count($delCon); $j++) { 60 $delDate = explode('<>', $delCon[$j]); 61 if ($delDate[0] != $delete . ".") { 62 $b = fopen("k_2_3.txt", "a"); 63 @fwrite($b, $delCon[$j]); 64 fclose($b); 65 } //$delDate[ 0 ] != $delete . "." 66 else { 67 $b = fopen("k_2_3.txt", "a"); 68 @fwrite($b, $delDate[0] . "." . "消去しました。\n"); 69 fclose($b); 70 } 71 } //$j = 0; $j < count( $delCon ); $j++ 72} //isset( $_POST[ "delete" ] ) 73 74if (isset($_POST["hennshuu"]) === true) { 75 $hennshuu = $_POST["hennshuu"]; 76 $datem = file("k_2_3.txt"); 77 for ($j = 0; $j < count($datem); $j++) { 78 $hennshuudate = explode('<>', $datem[$j]); 79 if ($hennshuudate[0] == $hennshuu . ".") { 80 $newname = $hennshuudate[1]; 81 $newcomment = $hennshuudate[2]; 82 83 84 } //$hennshuudate[0] == $hennshuu . "." 85 } //$j = 0; $j < count($datem); $j++ 86 $fp = fopen("k_2_5.txt", "w"); 87 fwrite($fp, "$hennshuu"); 88 fclose($fp); 89 90 91 92} //isset($_POST["hennshuu"]) === true 93 94if (isset($_POST["toukoum"])) { 95 $hennshuu = file_get_contents("k_2_5.txt"); 96 $comment = $_POST["comment"]; 97 $name = $_POST["name"]; 98 $file = file("k_2_3.txt"); 99 $filename = file_get_contents("k_2_3.txt"); 100 101 for ($j = 0; $j < count($file); $j++) { 102 $saisinn = explode('<>', $file[$j]); 103 if ($saisinn[0] == $hennshuu . ".") { 104 $result_arr = str_replace($saisinn[1], $name, $filename); 105 $result_brr = str_replace($saisinn[2], $comment, $result_arr); 106 } //$saisinn[0] == $hennshuu . "." 107 $fp = fopen("k_2_3.txt", "w"); 108 fwrite($fp, "$result_brr"); 109 fclose($fp); 110 } //$j = 0; $j < count($file); $j++ 111 112} //isset($_POST["toukoum"]) 113?> 114 115 116 117<?php 118echo $message; 119?> 120<form action="k_2_5_3.php" method="post" > 121名前を入力してください。<br/> 122<input type="text" name="name" value="<?php 123echo $name; 124echo $err_msg1; 125echo $newname; 126?>" /><br/> 127コメント<br/> 128<textarea name ="comment"cols="50" rows="5"><?php 129echo $comment; 130echo $err_msg2; 131echo $newcomment; 132?></textarea> 133<br> 134<input type="submit" name="toukoum" value="編集"> 135<input type="submit" name="toukou" value="投稿" /> 136 137 138 139</form> 140 141 <form action="" method="POST"> 142 削除対象番号<input type="text" name="delete"> 143 <input type="submit" name="deleteNo" value="削除"> 144 </form> 145 <form action="" method="POST"> 146 編集対象番号<input type="text" name="hennshuu"> 147 <input type="submit" name="hennshuuNo" value="編集"> 148 </form> 149 <h2>投稿一覧</h2> 150 151 152<?php 153$file_name = "k_2_3.txt"; 154$ret_array = file($file_name); 155for ($i = 0; $i < count($ret_array); ++$i) { 156 $line = explode('<>', $ret_array[$i]); 157 echo ($ret_array[$i] . "<br />\n"); 158} //$i = 0; $i < count( $ret_array ); ++$i 159 160?> 161 162```ここに言語を入力 163コード 164php 165 166###試したこと 167上のプログラムは編集のタグを追加したときに動いたプログラムです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

出来ます。
この投稿はDBに格納されていますか?
そうであれば、PrimaryKeyがあるはずですね。
「編集」の場合は、

HTML

1<input type="hidden" name="pkey" value="122">

のような形でpkeyを渡して、その値で編集対象を特定してデータを上書きするわけですよね

「投稿」の場合は、この値が空になるはずです。
ので、受け取る際にはこの値の有無を確認すればよいのでは。
質問文のソースコードを見る限り、henshuuで送っている値ですかね。
気分的に、hennsuuNoの方が番号を送ってそうな名前で混乱しそうなのがモヤモヤしますが。

投稿2016/10/13 07:02

kunai

総合スコア5405

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

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

shoutikubai

2016/10/13 07:14

DBに格納されてないのですが、そうでなければできないですか? 名前については申し訳ないです。
kunai

2016/10/13 07:20

DBじゃなくファイル管理でも、ともかく「どの投稿を編集するか」を特定する情報があれば可能ですよ。 回答にも書いてますが、hennsuuと言うinput nameが定義されているところで指定する番号がそれじゃないのでしょうか。
shoutikubai

2016/10/13 07:40

わかりました。ありがとうございます。 試してみます。
guest

0

見た感じファイルベースの投稿掲示板のような感じでしょうか。
編集と投稿の判別ですが、hiddenでも可能です。
おそらく、配列管理でおこなっていらっしゃると思いますのでhiddenで編集対象の配列のインデックスを渡してあげれば良いと思います。

<input type="hidden" name="toukou_id" value="配列のキー番号">

ただ、疑問点は「投稿」でも「編集」でもボタンは「編集」になるのでしょうか?
それとも別のソースがあるのか疑問ですが、ボタンも変えたいのであれば対象のデータを選ぶときも値の存在でボタン切り替えが必要かと思います。

投稿2016/10/13 07:27

nobinobi

総合スコア199

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

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

shoutikubai

2016/10/13 07:42

ありがとうございます。やってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問