• ベストアンサー

PHP includeでメニューを作る時の質問

PHP includeでメニューを作る時の質問 Webページを作成するにあたり、PHPを使用してメニュー部分を includeで取り込んで作成することにしたのですが、 メニューの中の今見ているページがわかり易いように、 今見ているページのメニュー部分の色が変わっているようにするには どうしたらよいでしょうか? それぞれのページにIDみたいのを定義しておいて、includeで読み込まれるPHPがIDを読んで PHP側にあるIF文(?)でIDによって色を変えるという判断ができそうな気がするのですが、 具体的にどうしたらよいかがわからず・・・ どうぞ宜しくお願い致します。

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

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

すごくザックリ作ったので、参考程度にしてくださいね。 今現在表示しているページは リンクにしないほうが親切だと思うので、そうしてます。 <? //───────────────────────────── $me = $_SERVER[PHP_SELF]; $ID = $_GET[ID]; $DimMenu = array ("トップページ" , "自己紹介" , "リンク" , "お詫び"); print "<hr>\n"; foreach($DimMenu as $i => $Menu) { if ($ID == $i) { print "<font color=red><b>$Menu</b></font> | \n"; } else { print "<a href=$me?ID=$i>$Menu</a> | \n"; } } // ↓ これは メニューには必要ないけど 動作確認用に入れました。 print "<hr><font size=+5>このページは「" . $DimMenu[$ID] . "」だぉ</font>"; //───────────────────────────── ?>

bin-bou
質問者

お礼

ご返信ありがとうございます。ぜひ使ってみたいのですが、 すいません、あいにく初心者で、よくわかりませんでした。(_ _) 試しに<BODY></BODY>間にご回答頂いた文例を入れたら 以下のように表示されました。 ”$Menu) { if ($ID == $i) { print "$Menu | \n"; } else { print "$Menu | \n"; } } // ↓ これは メニューには必要ないけど 動作確認用に入れました。 print " -------------------------------------------------------------------------------- このページは「" . $DimMenu[$ID] . "」だぉ"; //───────────────────────────── ?> ” それぞれのページと、"トップページ" , "自己紹介" , "リンク" , "お詫び" それぞれが 自分のページと判断するにはどのようにするのでしょうか?

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

その他の回答 (2)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

#2です。 #2の補足に書かれている現象は、多分、拡張子がhtmlだからです。 拡張子を php にしてもらえれば、問題なく動くはずです。

bin-bou
質問者

お礼

ありがとうございます。 できました。 アップロードしましたらできました。!!

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

メニュー用includeファイルで$_SERVER["SCRIPT_NAME"]の値をみて cssでclassをつける処理をいれるとか

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

関連するQ&A

  • PHPのインクルード

    WEBサイトをPHPで構築したいと考えています。 PHPの場合、ヘッダーやフッターなどの共通部分をインクルードできると思いますが、 ヘッダー内でもTitleやDescriptionなどのメタタグでページごとに変わる部分はどうすればよいのでしょうか? PHPでサイト構築している方はどうやってるのでしょうか?

    • ベストアンサー
    • PHP
  • ボタンを押すことでincludeの値を変更するには?

    ボタンを押すことでincludeの値を変更するには? HTMLとPHPを利用してウェブサイトを制作していているのですが、リンクに関してわからないことが出てきました。 現在index.htmlに以下の記述をしています。 <div id="menu"><?php include("menu.php"); ?></div> <div id="main"><?php include("main.php"); ?></div> menu.phpにリンクを記述して、それを押すことで<div id="main">に変化を与えたいのですが、そういうことは可能でしょうか? 具体的には<div id="main">内の<?php include("main.php"); ?>を<?php include("page2.php"); ?>などとできればうれしいのですが... ActionScriptでは出来たのですが、phpではどうすればいいのでしょうか...? 目的はindex.htmlなどを一度書き上げるだけで、あとの要素は全て簡潔にすませロードさせるだけにして管理を簡単にすることです。 メニュー->サブメニュー展開->内容表示 と三行程を行うのに、普通だとそれぞれ メニューのあるページ、左記に加えサブメニューの展開されたページ、左記二つを含んだ内容のページと、三つも必要になり大変です。 なのでボタンを押すと指定した要素に別のものをロードできたら...と思って質問させていただきました。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • セッション部分のインクルード

    お世話になっております。 PHPを使ったHTMLページを作成しているのですが、 セッション部分がうまく動きません。 index.phpページの一番上部に、 <?php include "http://www.○○○.com/lib/include/base.php"; ?> というように記述し、 base.phpには、 <?php session_start(); if(!isset($_SESSION["ses_ref"])){ $_SESSION["ses_ref"]= $_SERVER["HTTP_REFERER"]; } と記述しております。 セッション部分をインクルードせずに直接index.phpに記述した場合は、きちんと動くのですが、インクルードすると動きません。 (変数を取得できません。) セッション部分をインクルードすることはできないのでしょうか。 ご教授くださると非常にありがたいです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • php include がどうしてもできません;;

    php include がどうしてもできません;;; php、超がつく程初心者です; Windows7、Internet explorer9、Apache2.2、PHP5.4.6、現在はlocalhost上でphp動作確認、 作業しております。 サイトのメニューをPHPで作成したいと思い色々必死に調べ、htdocsフォルダ直下同士?のphpは何とか表示させることができました。(localhostですが) しかしhtdocsより下のフォルダに入っているものですと、例え同階層でも表示がされません; ↓のような感じで完全に詰まってしまいました; htdocs/index.html に htdocs/topmenu.php を表示させる↓ htdocs/index.html内で <?php include(dirname(__FILE__).'/topmenu.php'); ?> → 成功 htdocs/naiyou/naiyou1.html に htdocs/naiyou/menu.php を表示させる↓ htdocs/naiyou1.html 内で <?php include(dirname(__FILE__).'/menu.php'); ?> → 失敗 htdocs/naiyou/naiyou1.html に htdocs/topmenu.php を表示させる↓ htdocs/naiyou1.html 内で <?php include(dirname(__FILE__).'/../topmenu.php'); ?> → やっぱり失敗 htdocsフォルダ直下のみでしかできない設定に私がしてしまっているのでしょうか。 元々直下のみしか表示できないもの…? それとももっと基本的なところでひかかっているのかな… 何かのパスが間違っているのでしょうか。 htdocsフォルダの場所とDocumentRootは共に "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs" となっています; 知識不足もあり言葉が足りないこと、説明がよく分からないことも多いこともあるかと…すみません。 既出の質問等も探しているのですが同条件を中々見つけられず、もうかれこれ1ヶ月近く解決せず悩んでいます。 申し訳ありませんが、どなたかご教授ください...;

    • ベストアンサー
    • PHP
  • phpの(例えば)include

    phpでwebアプリを作成しています。 例えば、windowsでいうiniファイルに似たようなファイルを作成し、 そのファイルにdbopen情報を持たせてopenしたいのです。 global変数を使うということで、試しているのですが、うまくいきません。  ※postgresqlを使っています。 ・sysparm.inc <?php $inf1="1111"; $inf2="user"; $inf3="pass"; $inf4="name"; ?> ・dbaccess.php <?php include ("./include/sysparm.inc"); $dbinfo = "port=".$inf1 . " user=".$inf2." password=".$inf3." dbname=".$inf4;   ・   ・   ・ この$dbinfo 情報でopenしたいのですが、$inf1~$inf4まで何もはいってきません。 こういう場合、dbaccess.phpの $inf1~$inf4 まで”global" をつけるんでしょうか? つけて試したのですが、入ってきませんでした。 この方法は、windows版で言う GetPrivateProfileString・・・の用なことをしたくてたどり着きました。 最初はファイルを読んで、dbアクセス情報を取得していたのですが。。。 結局includeされていないのでしょうか? includeのパスの指定も dirname(__FILE__)."/include/sysparm.inc" のようにしてみてもだめでした。 どんな書き方、使い方が正解なのか、教えていただけないでしょうか? すみません、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • [ASP]条件によってインクルードしたいファイルを変えたい。

    こんばんわ。ASPにてWebページを作っております。 私はこれまで、何度もASPページ内に任意の.incファイルをIncludeして動的なWebページを作ってまいりました。 しかし、いままでは固定の.incファイルをIncludeしてきましたので下記のように、 <!-- #Include File="info.inc" --> 記述していました。 今回は・・・ sample.asp?ID=1 や sample.asp?ID=2 のようにURLに付加されて送信されてくる情報によってIncludeしたいファイルを変更しなければいけません・・・。 この場合はどのように記述してやればいいでしょうか? <% If Request("ID") = "1" Then %> <!-- #Include File="pageA.inc" --> <% ElseIf Request("ID") = "2" Then %> <!-- #Include File="pageB.inc" --> <% End If %> 単純に上のようなことでいいのでしょうか? お手数をお掛けしますが何卒宜しくお願いいたします。

  • php インクルードincludeした時のパス

    phpにてincludeした時のパスで躓いています。 現在のツリーは以下の様になっています。 index.html common  ├header.html  ├footer.html  ├right.html  ├img   ├navi-home.jpg   ├navi-1.jpg  ├css   ├base.css salon  ├hair    ├kari     ├index.html     ├access     ├ ├index.html     ├menu     ├ ├index.html この中の../hair/kari/index.htmlの中に ../common/header.html及びfooter.htmlを <?php include_once(dirname(__FILE__).'/../../../common/header.html'); ?> にてインルードしています。(書き方あってます?dirname(__FILE__).いります?) つぎに../hair/kari/access/index.htmlの中にもインクルードします。 <?php include_once(dirname(__FILE__).'/../../../../common/header.html'); ?> という風に一つ下の階層なので../を付け足しました。 このようにページ毎にheaderまでの相対パスが違うので、そのページ毎にパスを書き換えていかなければいけないものなのでしょうか? また../始まりではなく/始まりでないと表示されません。 /始まりは絶対パスでしたっけ? この書き方は間違っているのでしょうか? そして最後に、 ../common/header.htmlの中の画像ファイルやリンクは <img src="/common/img/navi-home.jpg"> の様に書かないと、インクルードしたファイル側で表示されません。 これも同じように/始まりのこの書き方でいいのでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • うまくPHPファイルを読み込めない

    下記の2つのクラスがあり、AClass.phpからBClass.phpをincludeしています。 AClass.php └include BClass.php ところが、AClass.phpからうまくBClass.phpをincludeできないため、 ところどころデバッグ文を仕込んで調査したところ、 静的に変数を呼び出すところがあると、うまくincludeできないようでした。 具体的には、 AClass.php内で static public $AParam = array(...); とstaticな変数を定義しています。 BClass.php内で、 $name = get_class($this); // ここでAClass.phpの名前を取得しています if(isset($name::$AParam)){... // ★AClass.phpのstatic変数、$AParamを呼び出そうとしています★ ★の部分のように、「クラス::パラメータ」があると、 どうやらAClass.phpからBClass.phpをincludeできずに終わってしまい、 ★の部分がなければ、きちんとincludeされるようです。 何かお心当たりありませんでしょうか。 設定等でも何かお心当たりありましたら、ご教示いただければ幸いでございます。 PHP Version => 5.3.0 Server version: Apache/2.2.13 (Unix)

    • ベストアンサー
    • PHP
  • PHPファイルをincludeしてHTML表示する

    お世話になります。 PHP含めプログラム初心者の者です。 どうか知恵をお貸しください。 現在制作しているHTMLサイトがあります。レイアウトはCSSです。 そのうちのひとつのコンテンツのブログページをサイト内WordPressで更新できるようにしたいと考えています。本来なら全てのページをWordPress化したほうがいいのでしょうが、新たにまたいろいろ記述する時間がないもので、とりあえずはblog.htmlなページのコンテンツ表示領域にWordPressで作ったindex.phpが表示されたらいいなと考えております。 ネットでいろいろ調べた結果、「phpファイルをincludeする」という方法によって、それをhtmlファイルで表示する方法があるようです。そこで質問なのですが、具体的にどのようにソースを記述すればそれは可能になるのでしょうか。 (1).htaccessに「AddType application/x-httpd-php .html」と記述する。 (2)表示したいHTML部分に「include(dirname(__FILE__).'/index.php');」と記述する。 とありましたがそれだけではできませんでした。具体的にそうしればいいか教えていただけないでしょうか。(htmlの拡張子をshtmlにするとかいう情報もありましたが定かではありません。)PHPに関しては本当に初心者な者で、変な質問をしているかもしれませんがどうかよろしくお願い致します。 ※参考にした情報ソースは下記です。 http://www.yusk.org/memo/php-memo/php_include_001.html ※HTMLソースは下記です。 <body> <div id="header"> ~略~ </div> <div id="contens"> <div id="leftmenu"> ~略~ </div> <div id="rightmenu"> <div id="rightbox-inside"> <div id="rightbox-inside-txt"> <p class="title">BLOG</p> <p class="standard"> include(dirname(__FILE__).'/index.php');(←ここにブログを表示させたい) </p> </div> <div style="clear:both;"></div> <div id="rightbox-buttom"> </div> </div> </div> </div> <div id="footer"> ~略~ </div>

    • ベストアンサー
    • PHP
  • PHPをインクルードした時の画像パスについて

    PHPでページをインクルードをしようと思っています。 index.htmlにインクルードするページを仮にaaa.htmlとbbb.htmlとします。 aaa.htmlとbbb.htmlはcommonというフォルダに入っています。 aaa.htmlなどに使われている画像はcommonの中のimgというフォルダに入っています。 階層を表すと index.html common  ├aaa.html  ├bbb.html  ├img   ├gazou.jpg   ├gazou2.jpg というふうになっています。 そこで、index.htmlに <?php include("common/aaa.html"); ?>でインクルードし インクルードするaaa.htmlに設置してある画像には ../common/img/gazou.jpg というパスで設置しました。画像の確認はindex.htmlで確認済みです。 ※img/gazou.jpgではなぜかダメでした。(aaa.htmlからの相対パスではなく、インクルードした側にindex.htmlからの相対パスになるのでしょうか?) 次に salonというフォルダにあるhair(ヘアサロン)のフォルダにあるkari(仮)というお店ページを作ります。 階層は以下のようになっています。 index.html common  ├aaa.html  ├bbb.html  ├img   ├gazou.jpg   ├gazou2.jpg salon  ├hair    ├kari     ├index.html     ├access     ├ ├index.html     ├menu     ├ ├index.html   インデックスがあり、アクセスページ、メニューページなどさらに一つ入るといった作りになっています。 ここのページにもtoppageのindex.htmlと同じようにaaa.htmlなどインクードします。 階層が違うのでsalon/hair/kari/index.htmlへのインクルードは <?php include("../../../common/aaa.html"); ?> で行いました。問題なくインクルードはできたのですが、画像がつぶれています。 階層が違うからですよね? このように階層が異なるデータで 共通のインクルードをしたい時はどうしたらいいのでしょうか? 階層が違くとも共通で入るヘッダー等作りたいのです。 環境はテストなのでアパッチ、ローカルサーバーで見ています。 本アップしないと見れないのでしょうか? お願いします。

    • ベストアンサー
    • PHP