2016-06-14 19 views
1

私は何年もコードを作成していなかったが、おそらくすべてを忘れてしまったが、私は個人的なウェブサイトを開発しなおそうとしている。 divヘッダとdivフッタを.phpファイルに入れて、修正の際に1ページごとに手動で修正する必要はありません。 私の考えは次のようでした:)(別の.phpのヘッダーとフッター、現在のページのハイライト

ヘッダ-footer.php

<?php function head() 
     {echo '<ul> 
       <li><a href="tutorial.html"' if($current == "tutorial") {echo 'class="menu_link_active"';} else {echo 'class="menu_link"';} '>Tutorials</a></li> 
       <li><a href="contact.html"' if($current == "contact") {echo 'class="menu_link_active"';} else {echo 'class="menu_link"';} '>Contatti</a></li> 
       </ul>';} 

function foot() 
    {echo '...html...';} ?> 

機能ヘッド、それを強調するために、現在のページを認識すべきです。 はその後、私のウェブサイトのページに私はこのようなヘッダ-footer.phpを含める:

<head><?php include("php/header-footer.php"); ?><head> 

は2つの機能を呼び出す:

<body><?php $current = "projemi"; 
      head();?> 
     ...html code... 
     <?php foot(); ?></body> 

は、私の質問は以下のとおりです。 1)ページが表示されますこのエラーは:----構文エラー、予期しない 'if'(T_IF)、 '、'、 ';' ----を予期し、head関数を参照します。エラーはどこですか? 2)私が欲しいものを得るためにプロセスが正しいのですか、あるいは何か違うものを提案しますか?

ありがとう、私の悪い英語のために私を許してくれてありがとう!あなたは

<?php 
     function head($current){ 
     echo '<ul> 
      <li><a href="tutorial.html"'; 
     if($current == "tutorial") { 
       echo 'class="menu_link_active"'; 
     }else { 
       echo 'class="menu_link"'; 
     } 
     echo '>Tutorials</a></li><li><a href="contact.html"'; 
     if($current == "contact") { 
       echo 'class="menu_link_active"'; 
      } else { 
       echo 'class="menu_link"'; 
      } 
      echo '>Contatti</a></li></ul>'; 
     } 
    ?> 

はさて、あなたはそれゆえ、最初のセミコロンをオフにして、あなたのecho文を終了するのを忘れ

<?php 
    $current = 'someVal'; 
    head($current); 
    ?> 
+1

エコー後にセミコロンがありません。この種のエラーを表示するには、コードをよく識別してください。 –

答えて

3

エラー。

echo '<ul> 
       <li><a href="tutorial.html"'; if($current == "tutorial") {echo 'class="menu_link_active"';} else {echo 'class="menu_link"';} '>Tutorials</a></li> 
       <li><a href="contact.html"'; if($current == "contact") {echo 'class="menu_link_active"';} else {echo 'class="menu_link"';} '>Contatti</a></li> 
       </ul>'; 

はまた、提案、私はこれは、より効率的であると考えている(私はMVCのようなシステムを開発することをお勧めしたいが、それはあなたがやる何をしたいのビット少しあまりにも複雑だ):

echo '<ul> 
       <li><a href="tutorial.html"'.(($current === 'tutorial') ? 'class="menu_link_active"' : 'class="menu_link"').'>Tutorials</a></li> 
       <li><a href="contact.html"'.(($current === 'contact') ? 'class="menu_link_active"' : 'class="menu_link"').'>Contatti</a></li> 
       </ul>'; 
+0

実際の問題のように、セミコロンで文を閉じることはなかったようです。しかし機能は間違っていた。 – ksealey

+0

それは完璧なksealeyを働かせました、ありがとう!私は大括弧の間の$電流を完全に忘れてしまった(もちろん、エコー機能を閉じる) – Brigo

2

のように、あなたの関数を呼び出す使用する関数に値を渡す必要があり

+0

ありがとうCristianHG! もう1つ質問がありますが、それ以外の方法でコードを書くと効率的になるとはどういう意味ですか?パフォーマンス、読みやすさなどの面で効率性? – Brigo

+0

パフォーマンスと美的。文がよりよく実行され、文字数が少なくなり、コードがもっとプロフェッショナルで標準化されるようにする – CristianHG

関連する問題