2016-10-27 6 views
0

フォームで作業していますが、問題が発生しました。私は自分のSELECTタグの1つに対して異なる値を見せたいと思っている異なるユーザを持っています。これまでPHPを使ってURLを取得していて、$ field == 'donor'ならいくつかのオプションを削除します。ここでは、コードがあります:URLに基​​づいてHTMLコードを表示するか非表示にする

function defineUser($field){ 
    if(isset($_GET['user']) && urldecode($_GET['user'])){ 
     $field = urldecode($_GET['user']); 
     if($field == "donor"){ 
      return "<p> 
        <label for=designation>Designation</label> 
        <select name='merchant_defined_field_4' id='merchant_defined_field_4' required=''> 
         <option value=''>Select...</option> 
         <option value=''>Option 1</option> 
         <option value=''>Option 2</option> 
         <option value=''>Option 3</option> 
         <option value='Other'>Option 4</option> 
        </select> 
        </p>"; 
     } else if ($field != "donor") { 
      return "<p> 
        <label for=designation>Designation</label> 
        <select name='merchant_defined_field_4' id='merchant_defined_field_4' required=''> 
         <option value=''>...</option> 
        </select> 
        </p>"; 
     } else { 
      return "<p> 
        <label for=designation>Designation</label> 
        <select name='merchant_defined_field_4' id='merchant_defined_field_4' required=''> 
         <option value=''>...</option> 
        </select> 
        </p>"; 
     } 
    } 
} 

これは私の関数であり、今のページのソース自体に、私は単に持って、

<?php echo defineUser($_GET['user']); ?> 

私の質問は、単純に、私は、各ユーザが設定された標準オプションを見ることができる方法であります - 私の選択タグの中に - ユーザーが送られたURLに基​​づいて?

+0

最後の質問であなたが何を求めているかはわかりません。あなたは精緻化できますか? – David

+0

あなたの関数はあまり意味がありません。あなたはparam($ field)を渡しますが、最初の行為は3行目で上書きします。どうして? – Twinfriends

+0

"標準オプション"とは、$フィールドが他の値と一致しない最後の 'else'を意味します。 – McGuireV10

答えて

1

あなたのコードを簡略化することができます。

function defineUser() { 
    $user = isset($_GET['user']) ? urldecode($_GET['user']) : null; 

    switch ($user) { 
     case 'donor': 
      return "<p> 
        <label for=designation>Designation</label> 
        <select name='merchant_defined_field_4' id='merchant_defined_field_4' required=''> 
         <option value=''>Select...</option> 
         <option value=''>Option 1</option> 
         <option value=''>Option 2</option> 
         <option value=''>Option 3</option> 
         <option value='Other'>Option 4</option> 
        </select> 
        </p>"; 
      break; 

     default: 
      return "<p> 
        <label for=designation>Designation</label> 
        <select name='merchant_defined_field_4' id='merchant_defined_field_4' required=''> 
         <option value=''>...</option> 
        </select> 
        </p>"; 
    } 
} 

あなたはそれがグローバルにアクセス可能であるので、あなたは、依存関係を心配している場合を除き、それ$_GET['user']渡す必要はありません。次に、if else節で同じHTMLブロックを2回繰り返すことになりました。ここではswitchを使用するのが理にかなっています。

+0

$ _GET ['user']についてはどうしたらいいですか? – Samuel

+0

私はあなたがパラメータとして渡す必要がないということを意味します。 'defineUser($ field)'の代わりに 'defineUser()'を単に呼び出すことができます –

+0

OK!ありがとうございました;私は助けに感謝します!出来た。 – Samuel

関連する問題