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

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

ただいまの
回答率

90.50%

  • PHP

    24014questions

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

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

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,840

shoutikubai

score 3

前提・実現したいこと

編集のタグを追加すれば、プログラムを実行できるのですが、
<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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

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

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


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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/13 16:14

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

    キャンセル

  • 2016/10/13 16:20

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

    キャンセル

  • 2016/10/13 16:40

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

    キャンセル

+1

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/13 16:42

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

    キャンセル

同じタグがついた質問を見る

  • PHP

    24014questions

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