2011-10-24 11 views
3

ファイルのリストを作成して配列にドロップしようとしています。 外部コンテンツを呼び出すページのコンテンツを変更する必要があります。名前の配列=正しいファイルを取得

私はこの小さなコードを見つけ、それを機能させようとしています。 LINK(最後のコメント)

$all_pages=array("main","page_two","page_three");  
$page = $_GET['page'];  
if(isset($page) and array_key_exists("$page", $all_pages)) // added a missing ')' 
{ 
include('subfolder/folder/'.$_GET['$page'].'.html'); 
} 

も、これは動作しません。 正しいファイルにアクセスできません。 (コンテンツは常に空で表示されます)。

私は以下のようにファイルを呼び出す(しよう):事前に

<ul>  
    <li><a href="template.php?main">Main content</a></li> 
    <li><a href="template.php?page_two">Second content</a></li> 
    <li><a href="template.php?page_three">Third content</a></li> 
</ul> 

ありがとう!

+1

は "template.php?page = main"などにする必要があります。 –

答えて

2

許容値をテストするには、in_array()を使用する必要があります。 array_key_existsでは、ページ名を配列キーにする必要があります。

第2に、$_GET["page"]は、その名前のgetパラメータがないため、空になります。

<li><a href="template.php?page=main">Main content</a></li> 
    <li><a href="template.php?page=page_two">Second content</a></li> 
    <li><a href="template.php?page=page_three">Third content</a></li> 

あなたの第三の問題は、使用していた:あなたは、あなたのリンクを適応しなければならない(あるいは$_SERVER["QUERY_STRING"]を使用しかしあなたは、おそらくそれを行うにはしたくない。。):

include('subfolder/folder/'.$_GET['$page'].'.html'); 
          ^^^ ^^^ 

をここでは$page変数のみを使用していて、すでに$_GETから読み込んでいるはずです。その名前をもう一度キーとして使用することはできません。そして、あなたはさらにそれを一重引用符で括っています(二重に間違っていますが、幸いにも効果がありません)。

だから、正しいは次のようになります。

$all_pages = array("main", "page_two", "page_three");  
$page = $_GET['page']; 
if (in_array($page, $all_pages)) 
{ 
    include('subfolder/folder/'.$page.'.html'); 
} 
+0

ありがとうございます!メインコンテンツを指すために 'else'を追加するべきでしょうか? '最初にそれは'メイン 'コンテンツを読み込まない原因は、これは素晴らしい作品です! –

+0

はい、デフォルトのインクルードはここの 'else'ブロックに属します。 – mario

1

変更in_arrayからarray_key_exists。また変数$ pageを設定することもできますが、空であることを確認して、空でないことを確認してくださいif(!empty($page) && ...など

+0

ありがとう!あなたの助けを訴える! +1! –

関連する問題