• ベストアンサー

phpによる遠まわしな処理をあえてしたいのですが

全部、main.phpで解決すればいいことなのですが、 こんなことが可能かどうか質問させてください。 ページmain.phpにアクセスしたときに、 bg.phpが実行されて、 そのbg.phpからの命令でmain.phpの背景色が変更される、 (main.phpはユーザーが目にするページで、bg.phpは処理だけを行うページです) こんなことをしようとすると、すでに最初に main.phpが読まれてしまっているので、あとから、 bg.phpがbodyのbgcolorを変更しようとパラメータを送ってきたところで、 main.phpは既に読まれているので、再読み込みとかしないと駄目ですよね。 どうやれば外部php(bg.php)経由で、 最初に既に読み込まれているmain.phpの背景のカラーを変えることができるのでしょうか? 無駄な遠回りな処理だとはわかっていますが、考え方を教えてください。

  • PHP
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.1

> main.phpは既に読まれているので、再読み込みとかしないと駄目ですよね。 main.php がロードされると同時に画面に出力されるわけではありません。 出力する内容を変数に格納しておいて、bg.php でreplaceしてから出力すればいいのではないでしょうか? bg.php ---------- $output = preg_replace(検索表現,置換表現,$output); // 背景色に該当するスタイルを置換する(外部CSSを新たに読み込むなり、CSSそのものを取り替えるなりお好みで) ---------- main.php ---------- $output = '<html>...</html>'; include 'bg.php'; echo $output; ----------

jazzjazzja
質問者

お礼

ありがとうございました。 仕組みが非常によく分かり、うまくcssと連携がとることができました。分かり易い解説に感謝しております。 ありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

なにか勘違いがあるのだと思いますが・・・ 背景を変えるような処理は、cssなどに任せます。 どうしてもmain.phpで処理をおわらせたあとにbg.phpで背景を 変えたいのであれば、main.phpをob_get_contentsなどで 貯めておいて、そのheadにbg.phpでcssファイルを指定してやるのが ベターです。 じかにhtmlに書くのであればbodyタグをサーチしてbgcolorを 書き換えるのでしょうけど、いまそういうのは時代遅れです

jazzjazzja
質問者

お礼

ありがとうございます。 紛らわしい分かりにくい質問ですみませんでした。 おっしゃられる方法でできそうです。 ありがとうございました。

関連するQ&A

  • CSSで背景画像をランダムに表示させたいのですが

    CSSで背景画像をランダムに表示させたいのですが、簡単な対応方法などありますでしょうか? 背景のランダム表示としてbody部分をjavascriptで背景のランダム処理はたくさんあるのですが、今回はスタイルシートでbodyではなく、サイト内のいち部分のクラス要素の背景をランダムに表示させたいと思っています。 <div class="main"> ここにコンテンツがあって、このmainのクラス要素の背景をランダムに変えたいです。 </div> スタイルシートの方では現在は .main { float:left; background-image:url(/image/top_bg01.jpg); background-repeat:no-repeat; min-width:736px; height:auto; border-right:1px solid #000000; } としており、このtop_bg01.jpgの部分の画像を top_bg01.jpg top_bg02.jpg top_bg03.jpg top_bg04.jpg top_bg05.jpg とランダムに表示させたいのですが、対応方法が分からずに困っています。 http://www.designwalker.com/2006/12/random-css.html はためしてみましたが、PHPがうまく対応できずに断念してしまいました。 どなた様か宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • ajax後、php,mysqlも一部再読み込み?

    通常は一部でも変更が加わるとページの全てを再読み込みしますが、ajaxを利用すると、変更を加えた部分だけが再読み込みされるところまでは理解しています。 分からないところは、各プログラムへの動作がajaxを使った後の場合と通常の場合ではどのように違うのかです。 下記のような考え方で正しいですか?説明が下手で読みにくく申し訳ないですが、アドバイスをいただけたら嬉しいです。お願いします。 ■htmlは、実行を起こした部分を含めその子要素全てが再読み込みの対象に。  例えば、↓の<div#ajax>~</div>この間にある子要素の全てが再読み込みされる。それ以外のhtmlやcssは再読み込みされない。 ■cssは、htmlと同じで、その部分で使われているcssが対象。 ■javascriptは、ajaxの場合と通常の場合で違いはなく、常に全てが再読み込みされる(外部ファイル、記述の位置に関係なく)。 ■jquery、php、mysqlも、javascriptと同じで何一つ変わりなく通常通りに動く。 <?php ・includeで外部ファイルを取得 ・様々な処理 ・mysqlに接続して様々な処理 ?> <html> <head> <script type="text/javascript" src="外部ファイルでajaxを記述"></script> <title></title> </head> <body> <?php ・様々な処理 ?> <div id="main">  <div id="a">    <dl>~</dl>  </div>  <div id="ajax" onclick="ajaxの処理へ">    <table>~</table>    <ul>~</ul>    その他様々な処理  </div>  <p>~</p>  <img src=""> </div> <script type="text/javascript"> </script> </body> </html>

    • ベストアンサー
    • AJAX
  • phpの処理中に画面表示ををするには?

    phpの処理中に画面表示ををするには? phpの処理中にalertや画面表示ができるように依頼があり。 使ってはいけない方法もあり解決方法がみつからず困っています。 処理内容 5回ループする処理で1回の処理に約10秒かかる、 各回の処理が終わったところで画面表示やalertをする。 使ってはいけない方法 ・iframeやAjaxなどの非同期処理みたいな事はしない。(却下されました、、) ・このphpのループの各回でsubmitや再読み込みをさせない。 今までphpの処理が全て終わってから画面表示するイメージでいたので、 実現できるのか確認するため下記のソースを作りました。 結果:10秒ではなく50秒後にすべてのalertがでてきました。 ----------ここから---------- <html><head> <script> <!-- <? for(i=0; i<5; i++){ //10秒の処理 ?> alert("メッセージ:".i); <? } ?> //--> </script> </head> <body>無理な気がする</body> </html> ----------ここまで---------- (変数のダラは抜いています) 使ってはいけない方法以外に解決方法はあるのでしょうか。

    • ベストアンサー
    • PHP
  • PHPを使用してバックグランドカラーを変更できません

    PHPを使用してバックグランドカラーを変更しようとしています。フォームのテキストボックスに入力した色コードを、ボタンを押すことで再着色しようとしています。 一回目は大丈夫ですが、二回目以降は常に一回目の色になってしまい、困っております。お助けくださいm(_ _)m ブラウザのアドレスバーを見ますと、 一回目は色コード"ff0000"を指定し、 http://localhost/practice/phpself.php?bgcolor=ff0000 となっており、 二回目は色コード"0000ff"を指定し、やはり http://localhost/practice/phpself.php?bgcolor=ff0000 となっております。 ?以降を手動で消してやれば再着色可能なのですが・・・ 環境はPHP4.4.1+Apache1.3.34+Win2000SP4です。 ソースは以下のとおりです。よろしくお願いします。。。 <html> <head> <title>サンプル</title> </head> <body> <? $bgcolor = $_GET[bgcolor]; if($bgcolor == ""){ print("<body bgcolor=\"#ffffff\">"); }else{ print("<body bgcolor=\"#".$bgcolor."\""); } ?> <form method="GET" action="<? print($PHP_SELF); ?>"> <input type="text" name="bgcolor"><br> <input type="submit" value="色を入力して押して"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • Dreamweaver+PHPの効率化、生成について

    初めまして、どうぞ宜しく御願いします 只今、PHP学習と並行して先日購入したDreamweaverMX2004を使いHTML&PHPの効率よく生成する事を独学して学んでいます。 そこで以下のようなプログラムを作ったときにDreamweaverのライブデータの表示機能について質問があります。 *------php1------* <?php $red = "赤"; $html = <<<__HTML__ <html><body> <table width="50" height="50"> <tr><td bgcolor="#FF0000">$red</td></tr> </table> </body></html> __HTML__; echo $html; ?> *----------------* *------php2------* <?php $red = "赤"; ?> <html><body> <table width="50" height="50"> <tr><td bgcolor="#FF0000"> <?php echo $red; ?> </td></tr> </table> </body></html> *----------------* PHPページを作る時『PHP1』のように変数にHTMLを入れてからechoして表示しているのですが、ライブデータの表示機能を使うとtableタグのwidthとheightの大きさは表示されていますが背景やHTMLの編集がデザインでできなくなってしまい、悩んでいます。 DreamweaverでPHPを作成する時の書き方は『PHP2』のように埋め込めて書かないと上手く表示してくれないのでしょうか?もし『PHP1』の書き方で考えられる対処法のしかたや、もっといい方法がございましたら是非お教えください。 又、皆さんがどのようにPHPの生成しているのかとても興味があります、もし宜しければ『こんな方法がある』『この機能が便利』などございましたらアドバイス頂きたいです、どうぞ宜しく御願い致します。 長文で解り難い文章でスミマセン、最後まで読んで頂いて有難うございます。

  • javascriptのPHP化について

    宜しくお願い致します。 javascriptの外部ファイルをPHP化して、サーバサイドで動的に生成した内容を吐き出し、それをHTML側でjavascriptの外部ファイルとして受け取って処理しております。 この場合のブラウザがアクセスした際に処理される順番は・・・ (1)HTMLの読み込み開始 (2)header内のjavascript外部ファイルの読み込みと実行 (3)HTMLファイルのbody以下を読み込み (4)結果をブラウザに返して表示 という流れになるはずです。 この場合、(2)のjavascript外部ファイルの方がbodyより先に実行されるはずです。 しかし、javascript外部ファイル内のPHPでセッションデータを扱っている場合、(3)のbody内でPHPでセッションを定義した内容が、なぜか(2)のjavascript外部ファイルで反映されて実行されるのです。 私のイメージでは・・・ (1)HTMLの読み込み開始 (2)header内のjavascript外部ファイルの読み込みと実行  ※この時セッションは反映しない (3)HTMLファイルのbody以下を読み込み  ※この時にセッションを入れても(2)が既に実行さられているので反映しない (4)結果をブラウザに返して表示  ※結果、セッションにデータが入っておらず、php側でエラーを吐き出しjavascriptが止まる という様になるかと思ってましたが、なぜか実行されます。 javascriptはHTMLが全部読み込まれてから実行されるのでしょうか?

  • 背景色が変わってしまいます。

    <body bgcolor="">そのページの内容</body>の形で背景色を設定しているんですが、たまに、何もいじっていないのに、白い背景に戻ってしまいます。(いつもは黒にしているんですが…) 更新ボタンを押せばちゃんと黒くなるんですが、戻ったりするとやっぱり白くなってたりします。 何故なんでしょうか?

    • ベストアンサー
    • HTML
  • クリックでテーブル内の背景色だけを変更したいです。

    教えてください。 ページ全体の背景色を変更するのは、 ↓でできたのですが、 <form> <input type="button" value="White" onClick="document.bgColor='white'"> <input type="button" value="Gray" onClick="document.main='gray'"> <input type="button" value="Blue" onClick="document.bgColor='blue'"> </form> ページ内の一部のテーブルのみの背景色を 変更したい場合はどうように変更すればいいのでしょうか? 教えてください!

  • PHPについて

    PHPについて PHPを使ったメールフォームを作ろうとして、ローカルに保存して、自分のメール宛でテストしてみても、送られてきません。。。 PHPの方は、確認ページと動作を一緒に組み込んだのです。ホームとPHPの文は次の通りです。 ホームのbody(フォーム自体) <body> <form action="\newfile6-1.htm" method="POST"> <table width="545" border="0" cellpadding="5" cellspacing="1" bgcolor="#C5CFED"> <tr> <td width="130" bgcolor="#E6EAF7" class="font_black"><div align="center">お名前</div></td> <td width="392" bgcolor="#FFFFFF" class="font_black"> <input class=formb size="70" type="text" name="callsighn" /></td> <tr> <td bgcolor="#E6EAF7" class="font_black"><div align="center">メールアドレス</div></td> <td bgcolor="#FFFFFF" class="font_black"><input class=formb size="70" type="text" name="email" /></td> </tr> <tr> <td bgcolor="#E6EAF7" class="font_black"><div align="center">題名</div></td> <td bgcolor="#FFFFFF" class="font_black"><input class=formb size="70" type="text" name="subject" /> </td> </tr> <tr> <td bgcolor="#E6EAF7" class="font_black"><div align="center">内容</div></td> <td bgcolor="#FFFFFF" class="font_black"><textarea class=formb name="_msg;s" rows="10" cols="50"></textarea></td> </tr> </table> <table width="160" border="0" cellpadding="0" cellspacing="0" class="m-top20"> <tr> <td width="60"><input type="submit" value=" 送信 " class=nbox /></td> <td width="40"><img src="images/spacer.gif" alt="" width="40" height="1"></td> <td width="60"><input type="reset" value=" 中止 " class=nbox /></td> </tr> </table> <input type="hidden" name="nextpage" value="\newfile6-1.htm"> </form> </body> PHPを含んだ方 <body> <?php mb_language("japanese"); mb_internal_encoding("SHIFT-JIS"); $to = "(自分のアドレス)"; $subject = "JH2YQBです"; $body = "お問い合わせの確認です。","お名前:",$_POST["callsighn"],"内容:",$_POST["body"],; $from = $_POST[email]; mb_send_mail($to,$subject,$body,"From:".$from); ?> <h1>送信しました</h1><br> <a href="\newfile.html">Top</a> </body> 何かまずいところがあったらご指摘ください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでのsystem関数の処理ができないです。

    PHPでsystem関数を使ってアプリケーションを実行するだけの 簡単なプログラムを作ったのですが、 ブラウザでPHPのページが開き終わって 処理は全て終わった状態になるのですが、 アプリケーションが全く起動しません。 PHPのプログラムは以下の通りです。 ************************************************ <html><head> <title>アプリケーション起動</title> </head><body> <?php $user_cmd = "C:\phpdev5\www\himekuri\Himekuri.exe"; $cmd = escapeshellarg($user_cmd); system($cmd); ?> </body></html> ************************************************ $user_cmdで指定したアドレスにあるHimekuri.exeという アプリケーションを起動しようとしています。 開発環境は OS:Windows2000 phpdev5(MySQL,Apache)を使用 といった感じです。 system関数を使用するのに何か設定などがいるのでしょうか? 分かる方ご教授お願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう