2011-12-16 18 views
1

私は、オープン中括弧付きif文が含まれている上部のPHPはcyrly括弧ifelse containgトップファイルと下のファイルをinlcude

をPHPファイルをのinclude_onceそして時にファイルを含めることができますどのように誰かが私に言うことができますbottomには、そのif文に先行するより多くのif文が含まれています。レンダリングされたページがオープンクローズのために、中括弧を認識しないかのように

<?php include_once('includes/authtop.php');?> 

<div id="mydiv"> 
// stuff here 
</div> 

<?php include_once('includes/authbottom.php');?> 

**Note**: authbottom.php contains several ifelse statements and displays data accordingly. 

は、私はもっときれいで、組織符号を持っているために、これを行う必要があるが、私はにコードを移動したときに、私はエラーを取得含まれ、それがですか?

関数や関数/クラスと関係がある人は、私に例を挙げてください。

これは一番上のファイルです:

if($loggedin) { 

if($accessLevel == 0 ) { 

これは下のファイルですauthtop.php:ジョン

authbottom.php事前に

} elseif() { 

// do this 

} elseif() { 

// do this 

} elseif() { 

// do this 

} else { 

// do this 

} 

感謝:)

+0

ああ、私が得るエラーは次のとおりです。Parse error:構文エラー、予期しない$ end in(中括弧が最初のインクルードの最後の行にあります) – jonnypixel

答えて

0

あなたはいけませんそのように条件を処理するためのファイルを含める必要があります。それは面倒でエラーが起こりやすい。あなたが発見したように。

代わりに、あなたのコードをリファクタリングしてください。ここで

はその一例です...

function someFunc() { 
    if($loggedin) { 

     if($accessLevel == 0 ) { 

     return TRUE; 

     } elseif() { 

     // do this 

     } elseif() { 

     // do this 

     } elseif() { 

     // do this 

     } else { 

     // do this 

     } 
} 



if (someFunc()) { 
    // stuff here 
} 
+0

ありがとうございました。しかし、それは私のすべてのHTMLがそれらのifステートメントの間に行かなければならないということですか?私は最初のifの結果がメインファイルに保存されることを期待していましたが、smalleのビットしか含まないものはfinalのif文 – jonnypixel

+0

にTRUEを返すことができました。 – jonnypixel

+0

@jonnypixel:私の例の下の条件では、中括弧内のコードが実行されることを意味します。 – alex

0

私はHTMLを何でも表示されますスイッチ

include('authtop.php); 

switch($accesslevel) { 
    default: 
    case 0: include('filepath.php'); break; 
    case 1: include('filepath.php'); break; 
    case 2: include('filepath.php'); break; 
    case 3: include('filepath.php'); break; 
    case 4: include('filepath.php'); break; 
} 

include('authbottom.php'); 

か....

switch($accesslevel) { 
    default: 
    case 0: 
     if($paid==0) { $pd='THANKS'; } else { $pd='DONATE!'; } 
     $lvl = 'Guest'; 
     /* whatever you need to include for level 0 here */ 
     break; 
    case 1: 
     if($paid==0) { $pd='THANKS'; } else { $pd='DONATE!'; } 
     $lvl = 'User'; 
     /* whatever you need to include for level 1 here */ 
     break; 
    case 2: 
     if($paid==0) { $pd='THANKS'; } else { $pd='DONATE!'; } 
     $lvl = 'Moderator'; 
     /* whatever you need to include for level 2 here */ 
     break; 
    case 3: 
     if($paid==0) { $pd='THANKS'; } else { $pd='DONATE!'; } 
     $lvl = 'Super Moderator'; 
     /* whatever you need to include for level 3 here */ 
     break; 
    case 4: 
     if($paid==0) { $pd='THANKS'; } else { $pd='DONATE!'; } 
     $lvl = 'Admin'; 
     /* whatever you need to include for level 4 here */ 
     break; 
} 


echo ' 
<div class="myDiv">'.$pd.'</div> 
<div class="myDiv2">'.$lvl.'</div> '; 

を使用したいですスイッチに応じて$ pd変数が設定されています。

そして、中かっこや角かっこのない自己完結型になるようにインクルードを設定することをお勧めします。

+0

ありがとうscott、物事は、彼らは中括弧を持っている必要があります。あなたの方法はうまくいくように見えますが、アレックスの方法はより組織的な方法のように見えます。私はちょうどalexからのコードを試して、それのまわりで私の頭を得るように思わない。あなたの例も試してみましょう。どのように私はカールを行うでしょうか? – jonnypixel

+0

if/else文は必要ありません。スイッチは基本的に、より組織化された複数レベルのif/elseステートメントです。私はif/ifelse/ifelse/ifelse/elseステートメントの方が長い場合にスイッチを優先します。上記では、ユーザーレベルの特定のコンテンツをどこに配置するかを示すために編集しました。ユーザーがログインしていない場合、アクセスレベルは0になると見なされます。ログインするためには別の変数は必要ありません。 – Scott

+0

なぜ、上に開いた中括弧それの終わりを開いて、中括弧のための閉じた中括弧を含むPHPファイルを一番下に含めますか?事は、さまざまなレベルのpermisisonを切替えていないのですが、statemntsに余分な条件が含まれていれば私の他のものです。例:accesslevel = 1 && paid == 0そしてaccesslevel = 1 && paid = 1などの場合... – jonnypixel