• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:includeされたphpの中でincludeを使用No.2)

includeされたphpの中でincludeを使用No.2

このQ&Aのポイント
  • phpファイル内でincludeを使用する方法について質問です。質問内容は、a.phpからb.phpを呼び出し、b.phpからc.phpを呼び出す構造になっています。ただし、a.phpで登録ボタンを押すと白紙が帰ってくるという問題が発生しています。
  • a.phpからb.phpを呼び出し、b.phpからc.phpを呼び出す構造のphpファイルで、登録ボタンを押すと白紙が返ってくる問題が発生しています。
  • includeを使用してphpファイル内で別のphpファイルを呼び出している際に、登録ボタンを押すと白紙が返ってくる問題が発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

お礼と補足で混乱しているようですが・・・・。お礼だとサブミット先のURLがb.phpで、補足だとinclude_onceでb.phpを指定とあります。この両者は全くの別物です。良く分からないので、以下の回答が的外れだったらゴメンナサイ。 おそらくinclude_once関数の意味というか、PHPのようなサーバサイドスクリプトがどのように動作するのかを誤解している為、このような疑問が出てくるのだと思います。(誰でもひっかかる部分なのでお気に召されずに!) include_onceの用途は色々ありますが、一般的な使い方は色々なページから使いたい汎用の関数とかを別ファイルにしておき、それをスクリプト中から読み込む場合に使います。 つまり、一般的な使い方ではa.php→b.php→c.phpと進んでいくページで、a.php内でb.phpを読み込んだり、その逆をしたりする必要は全く無いです。a.php、b.php、c.phpで共通の関数を使いたい場合、それをlib.phpとかにしておき、書くファイルからincludeする訳です。 まだPHP初めてまもないと思いますので、その段階では、これ以外の使い方はしないものだと理解してください。ソースを見て無いのでなんともいえませんが、include_onceの理解が間違っているために、間違った使い方をしているだけだと思います。 a.phpでデータを入力しb.phpへ渡すにはa.phpのHTMLのFORMタグで  <form action="b.php" method="POST"> 等と指定すればOKです。サブミットボタンが押されたらb.phpが呼び出されます。ここらへんの仕組みはサーバーサイドスクリプトの最初歩ですので、マニュアル本等で勉強されると良いと思います。

hinakotyan
質問者

お礼

だんだん分かってきました。 いろいろと試して、理解を深めたいと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

ちょっと質問文が読み取れなかったので補足をお願いしたいのですが、 a.phpでデータを入力するフォームのサブミット先URLはどこですか?(a.php?それともb.php?) 質問文にあるような事を私がやるならinclude_onceは使わないような気がするのですが・・・・。include_once(file)は『fileの内容をココにコピペせよ』って関数ですし、この場合どういう用途を想定して使っているのかをよろしければ教えてください。

hinakotyan
質問者

お礼

補足の部分ちょっと間違えていました。 サブミット先のURLが b.phpになります。 include_onceで呼び出しているわけではありませんでした。 失礼しました。

hinakotyan
質問者

補足

ありがとうございます。 include_onceで呼び出しているのはb.phpです。 私、PHPは初めてでテキストを買って試しに作っているだけです。 特にinclude_onceにしている意味は、それしかよく分からないからです。 もし、他にいい方法があるのであれば、 伝授していただきたいです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • include_onceで呼び出したPHPファイル

    PHPでサイトを組んでいるのですが、include_onceで以下のようにPHPの各ファイルを呼び出して実行しているのですがうまくいきません。 <?php //レンタルサーバーのcronを利用して、定期的に走らせるコードです。 include_once "example_a.php"; include_once "example_b.php"; include_once "example_c.php"; ?> 各ファイルは、RSSで読み込んだデータをMySQLに格納するプログラムです。 個別で各ファイルを実行すると正しい結果となりますが上記のようなプログラムでまとめて実行するとexample_a.phpは正しい結果となりますが、example_b.php、example_c.phpは正しく処理されません。 原因として考えられるものがあれば、教えていただきたいと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのincludeについて

    お世話になります。 Apache/2.2.3 PHP5.1.6 のレンタルサーバを利用しています。 httpdocs   |___lib   |  |___test.php   |___index.php という構造にしています。 -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'lib/test.php'; echo $a; ?> --------------------- 上記の場合、index.phpには 「sample」と表示されます。 -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- 上記の場合、なぜか表示されません。 そこで「http://~~」はincludeできないのかなと思ったのですが -----test.php-------- <?php $a = 'sample'; echo $a; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; ?> --------------------- とすると、なぜか「sample」と表示されました。 この結果から、includeはできているみたいです。 なんとか -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- で「sample」と表示させたくて試行錯誤してみたのですが どうしても解決できません。 お力添えのほどお願いできればと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • include_pathについて

    php.ini内のinclude_pathをinclude_path=".;C:\php\include"と設定してC:\windows\(不安なのでC:\php\にも)に置いているのですが、 なぜかphpinfo()を開いて確認すると".;C:\php5\pear"となっています。 Loaded Configuration File を見ても C:\Windows\php.ini となっていますし。 require_once "DB.php"を実行したときに以下のエラーが出たので、 db.phpのインストールも済んでいることから、include_pathが正しく設定されていないのが問題だと思うのですが・・・ Warning: require_once(DB.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\users.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'DB.php' (include_path='.;C:\php5\pear') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\users.php on line 2 php.ini以外にも設定しなければいけない個所があるのでしょうか?

    • 締切済み
    • PHP
  • it.phpをインクルード

    テンプレートhtmlとデータの結合をさせようと、 php.iniを書き換えて、include_pathの設定をしたのですが、 require_onceでit.phpのインクルードがうまくいきません。。 理由はなにが考えられるでしょうか? どなたか御教授おねがいいたします。 環境は、 PHP Version 4.1.2 Apache/1.3.23 です。

    • ベストアンサー
    • PHP
  • includeすると?が入る

    win2000、PHP5.3.0にて、includeをすると?が入ってしまいます。 具体的には -- a.php -- <?PHP print "A"; include 'b.php'; print "B"; ?> -- b.php -- C <?PHP print "D"; ?> E -- 結果 -- A?C DE B ブラウザ上ではこの?が見えないのですが、ソース上ではあります。 この?を何とかしたいのですが、これは何かの設定ですか?仕様ですか?不具合ですか?

    • ベストアンサー
    • PHP
  • インクルード元を知りたい

    PHP5.2.4を使用しています。 [a.php] <?php include("b.php"); include("c.php"); $c = new classC(); [b.php] <?php class classB { } [c.php] <?php class classC { public function __construct() { $c = new classB();//←b.phpファイルがどこでインクルードされたか知りたい } } という3つのファイルがあり、a.phpにアクセスするとします。 c.phpファイルのコンストラクタでb.phpファイルにあるclassBを生成していますが、 これはa.phpファイルにおいて先にinclude("b.php");があるので c.phpファイル内でもclassBを認識できると思います。 そこでc.phpファイル内でb.phpファイルがどこでインクルードされたか(この例ではa.phpファイル) 調べる方法なり関数というのはあるのでしょうか?

    • ベストアンサー
    • PHP
  • PHPのinclude_pathについて

    以下はPEARでExcelファイルを作成し、ダウンロードするプログラムです。 <?php require_once("Spreadsheet/Excel/Writer.php"); $workbook = new Spreadsheet_Excel_Writer('sample3-1.xls'); $worksheet =& $workbook->addWorksheet('サンプル'); $workbook->close(); print('<html>'); print('<head>'); print('<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />'); print('</head>'); print('<body>'); print('<p><a href="./sample3-1.xls">Excelファイル</a></p>'); print('</body></html>'); ?> このプログラムを実行すると、 Warning: require_once(Spreadsheet/Excel/Writer.php) [function.require-once]: failed to open stream: No such file or directory in C:\Inetpub\wwwroot\Test\src\excelsample.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'Spreadsheet/Excel/Writer.php' (include_path='.;C:\php5\pear') in C:\Inetpub\wwwroot\Test\src\excelsample.php on line 2 というエラーメッセージが出ます。 php.iniには、PEARのパッケージをインストールした際に ;***** Added by go-pear include_path=".;C:\php-5.2.17-Win32-VC6-x86\pear" ;***** と記述されているにも関わらず、エラーメッセージのpathはinclude_path='.;C:\php5\pear'となっており、原因がわかりません。 php.iniはC:\WINDOWSの直下に置いてあります。 PHPのバージョンはphp-5.2.17-Win32-VC6-x86で、Cドライブの直下にインストールしています。 WebサーバーはIISです。 eclipseを使っており、バージョン?はpleiades-e3.6-php_20110326です。 また、phpinfoのinclude_pathはLocalとMasterの両方が.;C:\php5\pearとなっています…。 Configuration File (php.ini) Path C:\WINDOWS Loaded Configuration File C:\WINDOWS\php.ini この2つはこの様になっており、これは2つの場所は一致していないといけないのでしょうか? 解決手段がまったくわかりません。 何かこのエラーについてわかることがあれば教えていただけませんか?

    • 締切済み
    • PHP
  • テーブル内でのinclude

    test.php内にテーブルがあり、1行目でa.phpをincludeし、2行目でb.phpをincludeしています。 <test.php内の仕組み> test.phpではa.php内のボタンでb.phpをincludeする仕組み =「a.php内のフォームのsubmitで自分自身にb.phpのファイル名を渡している」 ●実現したいこと b.phpを開くときにはa.phpを再度読み出し直したいです。 具体的には a.php内のボタンを押してb.phpのファイル名をpost(post先はtest.php)してb.phpがincludeされたときにb.phpからa.phpがincludeされる。 【a.phpの再読込が必要な理由】 a.phpはDBからの表示があり、ボタンを押した際にDBへの書込みがあります。その情報をリフレッシュさせるためです。 ●試してみたこと (1)<試し> test.php内の<body onload=~>で再度test.phpを読み出した。  ⇒無限ループになってしまいました。   a.phpには<body>無いので同様の動作ができません。   他に動作させる方法があれば問題ないですが・・・。 このような状況です。できればフレームでは実行したくないと考えています よい方法あれば教えてください。

    • 締切済み
    • PHP
  • PHP includeについて

    今、下記のようなサーバサイドのプログラムを作成しており、 解決できずに困っております。 【環境】 CentOS5 [PHP5] sakuraインターネット レンタルサーバ スタンダートプランです。 参考:http://www.sakura.ne.jp/rentalserver/matrix.html 【概要】 cronよりinclude関数を含むPHPファイルを実行、 そのPHPファイル内から他dirに保管されているテキストを参照し、 外部ASPへ文字列を送信する、という内容です。 理想としては、 cron1よりphp1を実行し、 php1に記載されている下記、 include 'phpA'; include 'phpB'; これら2行を完結させる事です。 しかしphpAは正常動作するのですが、 phpBは正常に動作せず、理想と異なる結果になります。 テストとして、下記を実行しました。 ★test1 php1のinclude関数を入れ替える。 include 'phpB'; include 'phpA'; 結果:phpBは正常動作、phpAにエラー。 ★test2 cron1よりphpAのみを実行 cron2を追加しphpBを実行 結果:phpA&B共に正常動作。 ★test3 test1と同じ構造でphp1を次のように変更。 include 'phpA'; sleep(30); session_unset(); $_SESSION = array(); session_destroy(); session_start(); include 'phpB'; 結果:phpAのみ正常動作。 上記の通り、cronを2種作成すれば理想の結果が返るのですが、 仕様上それは採用できず、あくまでphp1のみをcronより実行する 必要があります。 セッション・変数をリセットする必要があるのかと test3を試しましたが結果は同じでした。 尚、私はPGを専業としておらず質問に不適切な記載があるかと存じます。 お知恵をお借りできますと幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • phpのinclude_pathのエラーについて

    phpで以下のエラーが出ております。 いろいろ試しているのですが、解決できません。 各種設定ファイルに設定の誤りがあるのでしたら教えていただきたいと思います。 1)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes') in C:\Apache2\htdocs\aaa\ins.php on line 26 2)Fatal error: main(): Failed opening required '' (include_path='.;c:\php4\pear') in C:\Apache2\htdocs\aaa\ins.php on line 26 c:\php4\pearというディレクトリは存在しないがなぜか出る。 3)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes\aaa') in C:\Apache2\htdocs\aaa\ins.php on line 26 4)Fatal error: main(): Failed opening required '' (include_path='.;C:\Apache2\htdocs\aaa') in C:\Apache2\htdocs\aaa\ins.php on line 26 ##ins.phpのソース: $tpl = "ccc.tpl"; require_once($tpl); ##ディレクトリ構成 C:\Apache2\htdocs\aaa ins.php ccc.tpl ##php.iniの設定: ---有効にした場合1)のメッセージ include_path = ".;c:\php\includes"  ---コメントアウトした場合2)のメッセージ ;include_path = ".;c:\php\includes"  ---以下のpathにフォルダを作成してccc.tplを配置した場合3)のメッセージ include_path = ".;c:\php\includes\aaa" ---以下のpathを指定した場合4)のメッセージ include_path = ".;C:\Apache2\htdocs\aaa" ##httpd.confの設定: line 231 DocumentRoot "C:/Apache2/htdocs" line 256 <Directory "C:/Apache2/htdocs"> AllowOverride Options AuthConfig ##環境 os:winXP apache2:apache_2.0.58 php:PHP Version 4.4.1

    • ベストアンサー
    • PHP