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

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

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

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

PHP

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

Q&A

解決済

3回答

3472閲覧

PHP includeについて

version-l

総合スコア15

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

PHP

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

0グッド

0クリップ

投稿2018/03/02 10:42

前提・実現したいこと

社内用webアプリを作っています。

操作画面(main.php)に入力フォーム1と入力フォーム2を呼び出すボタンがあり、
ボタンを押すとファイル(入力フォーム1⇒input1.php、入力フォーム2⇒input2.php)をincludeする仕組みです。

ボタンは<input type ="submit" ・・・>で、
if(isset($_POST[]))で受け取っています。

入力フォーム1(input1.php)をincludeすると、次に入力フォーム2を表示するためには、
main.phpの2つのボタン選択に戻ってから入力フォーム2のボタンを押すようになっています。

input1.phpとinput2.phpを、一旦戻らずに交互にincludeできるようにしたいのですが、

そこでつまづいています。

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

input1.phpの最後の部分に<form>のsubmitボタンをつけて、

if(isset($_POST[]))で受け取ってinput2.phpをincludeするように記述したのですが、

ボタンを押すと、main.phpの最初の状態に戻ってしまいます。(input1.phpも消える)

エラーは出ません。

試したこと

if文の前に、include 'input.php';と記述すると、

input1.phpの下に続いて、input2.phpが表示されています。

ですがifの{}に入れるとincludeできません。

{}内に他のコードを書いても実行されませんでした。

補足情報

submitやpostが上手くいっていないのか?それともphpの仕様的な部分なのか?
今日は1日これにハマってしまい、ギブアップです。

何卒、宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

if(isset($_POST[]))

なにかおかしくないですか?

まず

PHP

1if(isset($_POST))

だと$_POST自体はスーパーグローバルなので必ずtrueですよね
ちなみに「if(isset($_POST[]))」だとエラーになりませんか?
postしたパラメータを書き忘れているのでしょうか?

かりに

if(isset($_POST["hoge"]))

を想定しているとして

$hoge=filter_input(INPUT_POST,"hoge");

のように一旦変数で受けたほうが良いと思います

投稿2018/03/02 12:32

yambejp

総合スコア114829

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

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

version-l

2018/03/02 13:33

ありがとうございます。 かなり省略してしまい申し訳ありません、 おっしゃる通り、if(isset($_POST['hoge'])) の状態です。 もう一度質問を書きなおします。 ①【main.php】 <?php //hoge1が押されたらinput1.phpをincludeする if(isset($_POST['hoge1'])){include 'input1.php';} //hoge2が押されたらinput2.phpをincludeする if(isset($_POST['hoge2'])){include 'input2.php';} ?> <form method="post" action=""> <input type="hidden" name="hoge0" value="value"> <input type="submit" name="hoge1" value="入力フォーム1"> <input type="submit" name="hoge2" value="入力フォーム2"> </form> ②【input1.php】 <form method="post" action=""> <input type・・・ ~(省略)~ <input type="hidden" name="hoge4" value="value"> <input type="submit" name="hoge5" value="入力フォーム2"> </form> <?php //hoge5が押されたらinput2.phpをincludeする if(isset($_POST['hoge5'])){include 'input2.php';} ?> ③【やりたいこと】 main.phpのボタン「入力フォーム1」を押して、 input1.phpを呼び出します。(これは正常) そのinput1.phpの中の「入力フォーム2」ボタンを押して input2.phpを呼び出したいが、includeされない。 ④【やってみたこと・質問】 最後のhoge5が押されたらinput2.phpをincludeする 部分を、 <?php include 'input2.php'; ?> にすれば、input1.phpをincludeすると同時にその直下にinput2.phpがちゃんと読み込まれています。 if(isset・・・の部分ですが、main.phpでは正常に作動しているのですが、 input1.php内ではなぜincludeできないのでしょうか? $hoge=filter_input(INPUT_POST,"hoge"); を使った場合、ボタンが押された場合に処理を行うには どのように書けばよいでしょうか? 二度手間ですみません、宜しくお願い致します。
bassbone

2018/03/03 02:53

質問の訂正はコメントではなく、質問自体を修正していただけると助かります。。。
version-l

2018/03/03 05:07

ありがとうございます。 質問自体を訂正可能、そして訂正した方が良いのですね、申し訳ありません。
guest

0

おそらくですが、、、
input1.phpの
<input type="submit" name="hoge5" value="入力フォーム2">

<input type="submit" name="hoge2" value="入力フォーム2">
にしたら意図した動きになりませんか?

投稿2018/03/03 03:07

bassbone

総合スコア767

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

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

version-l

2018/03/03 05:08

ありがとうございます。 残念ながら動きませんでした。
bassbone

2018/03/03 05:46

了解しました!
guest

0

自己解決

質問が的を得ずご迷惑をお掛けしました、申し訳ありませんでした。
なんとか自己解決しました。

良くわかりませんが、そもそもの構造に問題があったようです。
includeを記述する場所を同じにしたらうまく行きました。
ご回答いただきありがとうございました。

【訂正前】

(main.php)

<?php if(isset($_POST['input1'])){include 'input1.php';}//正常作動 if(isset($_POST['input2'])){include 'input2.php';}//正常作動 ?> <form action="" method="post"> <input type="submit" name="input1" value="入力フォーム1"> <input type="submit" name="input2" value="入力フォーム2"> </form>

(input1.php)

<?php if(isset($_POST['input3'])){include 'input2.php';}//作動しない ?> <form action="" method="post"> <input type="submit" name="input3" value="入力フォーム2"> </form>

【訂正後】

(main.php)

<?php if(isset($_POST['input1'])){include 'input1.php';} if(isset($_POST['input2'])){include 'input2.php';} **if(isset($_POST['input3'])){include 'input2.php';}** ?> <form action="" method="post"> <input type="submit" name="input1" value="入力フォーム1"> <input type="submit" name="input2" value="入力フォーム2"> </form>

(input1.php)

<?php **//削除**if(isset($_POST['input3'])){include 'input2.php';} ?> <form action="**main.php**" method="post"> <input type="submit" name="input3" value="入力フォーム2"> </form>

投稿2018/03/03 05:33

編集2018/03/03 05:37
version-l

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問