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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

Q&A

解決済

1回答

3328閲覧

1ページ内に存在する、複数フォームの値を同時に保持したい

gyorai934ne

総合スコア5

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

0グッド

0クリップ

投稿2020/01/23 10:17

前提・実現したいこと

●【1ページ内に存在する複数フォームの値を、ページ遷移(PHPアクション実施時)で同時に保持したい】

現在、PHP学習の一環で、
簡単な「掲示板」サイトを作っています。
下記の様な機能が実装済です。
A.検索機能(投稿内容や、ユーザー名で検索が出来ます)
B.投稿機能 ※確認画面を挟んで”はい”を押すとDBにレコードを書き込む
C.投稿削除機能 ※確認画面を挟んで”はい”を押すとDBからレコードを削除する

AとBとCで、<form>が別れていて、それぞれ別のPHPファイル(A:検索/B:投稿確認/C:削除確認)を実行させています。
それぞれの<form>毎で、その実行した<form>下のテキストボックスの値は、$_POSTで保持する事が可能ですが、
残りのformの値を保持する事が出来ません。

例えば、検索を実施した際、検索キーワードの保持は出来るが、
投稿内容(内容と投稿者名)の保持が出来なくなってしまうという次第です。

formが異なる場合、どのようにして複数フォームの値を保持出来るのでしょうか?

プログラミング学習を始めて日が浅いため、拙い理解&拙いソースコードで申し訳ないです。
Google検索では、適切なページに辿り着くことができず、大変、困惑しております。
ご教示いただければ幸いです。
よろしくお願い致します。

発生している問題・エラーメッセージ

該当のソースコード

PHP HTML
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>おしゃべりBBS</title> </head> <body>
<?php session_start(); $SESSION_['ses'] = ""; var_dump($SESSION_['ses']); //デバッグ用 //print_r($_POST); ?> <!--見出し--> <h1>おしゃべりBBS</h1> <!--検索&並び替え--> <form action="index.php" method="post" id="search"> <h2>検索</h2> <select name="search_category"> <option value="all">全て</option> <option value="content">投稿内容</option> <option value="user_name">投稿者</option> <!--<option value="updated_at">投稿日時</option>--> </select> <input type="text" name="search_word" value="<?php if(!empty($_POST["search_word"])){echo $_POST["search_word"]; }?>"/> <button type="submit" onclick="onButtonClick()";>検索</button> <br /> <!-- 並び替え--> <select name="sort"> <option value="asc" <?php if(isset($_POST["sort"]) ){ if($_POST["sort"] == "asc"){ echo "selected";} }?>> 投稿が古い順 </option> <option value="desc" <?php if(isset($_POST["sort"]) ){ if($_POST["sort"] == "desc"){ echo "selected";} }?>> 投稿が新しい順 </option> </select> <button type="submit">並び替える</button> </form> <!--投稿フォーム--> <h2>投稿フォーム</h2> <form action="add_confirm.php" method="post"> <label>投稿内容</label> <input type="text" name="content" id="content" required/> <label>投稿者</label> <input type="text" name="user_name" id="user_name"/> <button type="submit">送信</button> </form> <!--投稿一覧出力--> <h2>投稿一覧</h2> <?php //DBからレコードを取得する //並び替えのセッティング if(isset($_POST["sort"]) ){ if($_POST["sort"] == "desc"){ $sort = "DESC"; }else{ $sort = "ASC"; } }else{ $sort = "ASC"; } //検索絞り込みのセッティング if(isset($_POST["search_word"]) && $_POST["search_word"] != ""){ $search_flg = true; $search_word = htmlspecialchars($_POST["search_word"]); if($_POST["search_category"] == "all"){ //対象カテゴリー>全て $search_ctg = "all"; }elseif ($_POST["search_category"] == "content") { //対象カテゴリー>投稿内容 $search_ctg = "content"; }elseif ($_POST["search_category"] == "user_name") { //対象カテゴリー>投稿者 $search_ctg = "user_name"; /*}elseif ($_POST["search_category"] == "updated_at") { // code... $search_ctg = "updated_at";*/ } }else{ $search_flg = false; $search_word = ""; echo "B通過"; } //DBへの接続 $pdo = new PDO('mysql:host=localhost;dbname=bbs_db;charset=utf8', "root", "" ); //DBからデータを取得 if($search_flg == false){ //初期は絞り込みなしで全件表示 $sql = "SELECT * FROM bbs ORDER BY updated_at ".$sort; }else{ //検索絞り込み実施時はキーワードで絞り込む //カテゴリー>全種 if($search_ctg == "all"){ $sql = "SELECT * FROM bbs WHERE user_name LIKE \"%".$search_word."%\" OR content LIKE \"%".$search_word."%\" ORDER BY updated_at ".$sort; var_dump($sql); } //カテゴリー>投稿者 if($search_ctg == "user_name"){ $sql = "SELECT * FROM bbs WHERE user_name LIKE \"%".$search_word."%\" ORDER BY updated_at \"".$sort; var_dump($sql); } //カテゴリー>投稿内容 if($search_ctg == "content"){ $sql = "SELECT * FROM bbs WHERE content LIKE \"%".$search_word."%\" ORDER BY updated_at \"".$sort; var_dump($sql); } } $stmt = $pdo->prepare($sql); $stmt->execute(); $row = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> <?php //DBにデータが存在しない場合と、検索実施の結果該当が0件の場合、表を表示せずにコメントのみ表示する if(empty($row)){ ?> <h2 style="color:red">データが存在しませんでした。</h2> <?php //検索有無に関わらず、1件以上のデータが存在する場合、表でレコードを表示する }else{ ?> <!-- 投稿内容の表示--> <table border="1"> <tr> <th>id</th> <th>日時</th> <th>投稿者</th> <th>投稿内容</th> <th></th> </tr> <?php foreach ($row as $value) { ?> <tr> <td><?php echo $value['id'];?></td> <td><?php echo $value['updated_at'];?></td> <td><?php echo $value['user_name'];?></td> <td><?php echo $value['content'];?></td> <td> <form action="delete_confirm.php" method="post"> <input type="hidden" name="delete_id" value="<?php echo $value['id'];?>"> <button type="submit">削除</button> </form> </td> </tr> <?php } ?> </table> <?php } ?>
</body> </html>

試したこと

javascriptで、各フォームの実行ボタンを押下した際に、
PHPのセッション変数に、getElementbyIdで取得した値を保持させようとしたが、
思うようには動かず。
(そもそも無理?)

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答1

0

ベストアンサー

クッキーやjsを使って無理やりすればできますが
それはもはやpostで別々な送り先に送る意味がなくなります
formの送り先が違うのですからほかのformを参照しないでください
そうじゃなければ一つの送り先にしてなにかの値をつかって
各送り先に振り分けてください

投稿2020/01/23 10:23

yambejp

総合スコア114747

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

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

gyorai934ne

2020/01/23 10:44

なるほど、formを分離せずに、ひとまとめにして、 それぞれのボタンでアクションを分けたりすればいいのですね。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問